Objective-C 入門指南 - 介面與實作分開

簡單來說,介面 (interface) 與實作 (implement) 分開,就是將介面放進標頭檔 .h 中,而實作仍是放在原來的 .m 檔案中




所以新增一個類別 (class) 等於要加入兩個檔案,也就是類別的標頭檔與實作檔。 Xcode 中,新增檔案利用選單的 New File...



這時會開啟 New File 視窗,這裡要選擇我們要新增的 Objective-C class 檔案類型



然後輸入檔名,檔名其實也就是類別名稱,就 Encrypt.m 囉!記得,下面的 Also create "Encrypt.h" 也要有勾選



這樣在 Xcode 中就完成新增類別的標頭檔與實作擋了,檔案可能有預設內容,我們直接以接下來所寫的程式覆寫過去即可。


現在來想想 Encrypt 中需要什麼屬性 (property) 與方法 (method) 。首先,我們需要一個 NSArray 來儲存按字母順序的英文字母表,另外需要一個 NSMutableArray 儲存密碼對換表,還要有編碼用的 toEncode: 以及解碼用的 toDecode: 兩個方法。


因為有兩個屬性物件,這就是說我們需要兩個表格屬性的 settergetter 方法。 setter 部份,我們會用等同建構子 (constructor) 的 initRandomEncrypt 方法來取代, getter 的話, Encrypt.h 利用 @property 指令宣告, Encrypt.m 則用 @synthesize 指令宣告,這樣編譯器 (compiler) 就會自動增加 getter 囉!


我們的 Encrypt.h 如下
#import <Foundation/Foundation.h>

@interface Encrypt: NSObject
{
    NSMutableArray *cArray;
    NSArray *oArray;
}

@property (retain) NSMutableArray *cArray;
@property (retain) NSArray *oArray;

- (id) initRandomEncrypt;
- (NSString *) toEncode: (NSString *) s;
- (NSString *) toDecode: (NSString *) s;

@end

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


除了在介面檔中宣告 @property 外,實作檔也要宣告 @synthesize ,我們來詳細討論一下 @property 與 @synthesize 吧!


中英文術語對照
介面interface
實作implement
類別class
屬性property
方法method
建構子constructor
編譯器compiler
引用計數reference count


您可以繼續參考
軟體開發


相關目錄
Objective-C 入門指南
Objective-C 教材
首頁



參考資料
Learning Objective-C: A Primer
The Objective-C Programming Language
Cocoa Fundamentals Guide
Coding Guidelines for Cocoa
Advanced Memory Management Programming Guide
Archives and Serializations Programming Guide

沒有留言: