NSString / 字串常量
Objective-C 字串常量以 @ 開頭:@"Hello"、@"中文"。編譯器自動生成 NSString 實例,屬於類別簇,不可變。可變字串用 NSMutableString。
id 型別
typedef struct objc_object { Class isa; } *id;
- 所有物件指標的通用型別,相當於
void* 但帶有 isa 指標支援動態綁定。
- 宣告時不加星號:
id obj = [[MyClass alloc] init];。
- 可存放任何繼承自
NSObject 的實例。
BOOL / 布林值
typedef signed char BOOL;
#define YES ((BOOL)1)
#define NO ((BOOL)0)
- 底層為
signed char,佔 1 byte。
- 慣用
YES/NO,判斷式可直接 if (flag)、if (!flag)。
SEL / 選擇器
- 方法的唯一標識(編譯期產生),型別為
SEL,實際為 struct objc_selector*。
- 取得:
@selector(methodName:) 或 NSSelectorFromString(@"methodName:")。
- 動態派發:
[obj performSelector:sel withObject:arg]。
- 不同類別可有同名方法,
SEL 不綁定類別,故可跨類別呼叫同名方法。
Class / 類別物件
- 每個類別本身也是一個物件,型別
Class。
- 取得:
[obj class] 或 [MyClass class]。
- 常用方法:
isKindOfClass:(含子類)、isMemberOfClass:(僅本類)、className(取類別名稱字串)。
nil / Nil
| 符號 | 定義 | 用途 |
nil | #define nil 0 | 空物件指標,id、NSString* 等可賦值 |
Nil | #define Nil 0 | 空類別指標,Class 型別用 |
向 nil 發送訊息安全無效(返回 0/nil/0.0),無需像 C++ 檢查空指標。
類型對照表
| Objective-C | C/C++ 對應 | 備註 |
id | void* (含 isa) | 通用物件指標 |
Class | struct objc_class* | 類別物件 |
SEL | struct objc_selector* | 方法選擇器 |
BOOL | signed char | 1 byte |
NSString* | 無直接對應 | 不可變字串物件 |
實務建議
- 盡量使用具體類別指標(
NSString*、MyClass*)而非 id,編譯器可做型別檢查。
BOOL 變數命名建議加 is/has/should 前綴(如 isEnabled)。
SEL 搭配 respondsToSelector: 做安全動態呼叫。
- 上一篇文章: C 語言實作循環隊列(連續儲存版)
- 下一篇文章: 演算法經典:字串反轉的兩種高效實作(異或法與對調法)
Copyright ©
程式碼之家 All Rights Reserved