Objective-C 快速導覽 - 介面與實作分開

通常會把介面 (interface) 區段放在標頭檔中,實作 (implementation) 區段則是獨立的 .m 檔案,至於執行區段 main() 函數 (function) 則放在另一個獨立的 .m 檔案中。



在 Xcode 中用新增檔案的方式,即可同時新增 .m 與 .h 檔案。


例如我們有以下的 Demo.h
#import <Foundation/Foundation.h>

@interface Demo: NSObject
{
    int a;
    int b;
}

- (int) a;
- (int) b;  
- (id) setA: (int) pa;
- (id) setB: (int) pb;
- (int) do_something;

@end

/* 《程式語言教學誌》的範例程式
   http://pydoing.blogspot.com/
   檔名:Demo.h
   功能:Objective-c 程式範例
   作者:張凱慶
   時間:西元 2013 年 4 月 */


實作檔 Demo.m 如下,注意開始的地方要先 #import "Demo.h"
#import "Demo.h"

@implementation Demo

- (int) a
{
    return a;
}

- (int) b
{
    return b;
}

- (id) setA: (int) pa 
{
    a = pa;
    return self;
}

- (id) setB: (int) pb
{
    b = pb;
    return self;
}

- (int) do_something
{
    return a + b;
}

@end

/* 《程式語言教學誌》的範例程式
   http://pydoing.blogspot.com/
   檔名:Demo.m
   功能:Objective-c 程式範例
   作者:張凱慶
   時間:西元 2013 年 4 月 */


執行檔如下
#import "Demo.h"

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    Demo *demo = [[Demo alloc] init];
 
    [demo setA: 11];
    [demo setB: 22];
    NSLog(@"a = %d, b = %d", [demo a], [demo b]);
    NSLog(@"a + b = %i", [demo do_something]);
 
    [pool drain];
    return 0;
}

/* 《程式語言教學誌》的範例程式
   http://pydoing.blogspot.com/
   檔名:classdemo02.m
   功能:Objective-c 程式範例
   作者:張凱慶
   時間:西元 2013 年 4 月 */


編譯執行,結果如下



中英文術語對照
介面interface
實作implement
函數function


您可以繼續參考
類別


相關目錄
Objective-C 快速導覽
Objective-C 教材
首頁



參考資料
Programming with Objective-C: About Objective-C
Programming with Objective-C: Working with Objects

沒有留言: