| 面向過程 (C) | 面向物件 (OC) |
| 焦點 | 步驟、函數 | 物件、職責 |
| 擴充性 | 差 | 佳 (封裝、繼承、多型) |
| 重用性 | 低 | 高 |
三、類別定義 (兩部分)
介面部分 (.h)
@interface Person : NSObject {
@public NSString *hobby;
@protected NSString *name;
NSInteger age;
@private NSString *sex;
}
- (void)sayHi;
- (void)info;
@end
實現部分 (.m)
@implementation Person
- (void)sayHi { NSLog(@"Hello!"); }
- (void)info { NSLog(@"name:%@ sex:%@ age:%ld", _name, _sex, _age); }
@end
檔案慣例
- `Person.h` — 介面
- `Person.m` — 實現
- 檔案名與類別名對應,但本質無強制關聯。
四、建立物件 (兩步驟)
Person *p = [Person alloc]; /* 1. 分配記憶體,實例變數歸零,回傳 id */
p = [p init]; /* 2. 初始化,設定初始值,回傳 id */
/* 合寫 */
Person *p = [[Person alloc] init];
- `+alloc` 類方法,`-init` 實例方法。
- `id` 通用物件指標類型。
五、使用物件
- 指標變數儲存物件位址,代表物件。
- 發送訊息:`[p sayHi]`、`[p info]`。
- 存取實例變數 (需 `@public`):`p->_name = @"ZhangSan"`;`NSLog(@"%@", p->_name)`。
六、實例變數操作
預設 `@protected`,外部不可直接存取。需透過存取器方法或設為 `@public` (不建議)。
總結
掌握 `@interface`/`@implementation`、雙階段建立 (`alloc`/`init`)、訊息傳送語法、實例變數可見度,即可進入 Objective-C 開發大門。
- 上一篇文章: Objective-C 學習筆記:實例變數可見度、方法分類與聲明、@class 避免循環引用
- 下一篇文章: C 語言定時關機程式:system 呼叫與字串處理實作
Copyright ©
程式碼之家 All Rights Reserved