Objective-C 在定義類時,提供三種訪問控制指令修飾實例變量,語法如下:
@interface Test : NSObject {
@public
int i;
int j;
@protected
float m;
float n;
@private
double x;
double y;
}
| 指令 | 訪問範圍 | 說明 |
|---|---|---|
| @public | 該類方法、子類方法、其他類方法均可直接訪問 | 完全開放,類似 C++ public |
| @protected | 該類方法、子類方法可直接訪問 | 默認級別,類似 C++ protected |
| @private | 僅該類內部方法可直接訪問 | 子類不可直接訪問,類似 C++ private |
⚠ Xcode 編譯器警告:雖然直接訪問 @private 變量在運行時能正常執行,但 Xcode 會發出警告。建議通過屬性或方法間接訪問,保持封裝性。
@property、@synthesize 或自動合成,通過 getter/setter 統一管理訪問邏輯Objective-C 的訪問控制機制與 C++ 高度相似,但作用於實例變量而非方法。方法默認均為公開(可通過分類或協議實現私有方法模擬)。理解這三個指令的邊界,是編寫健壯、可維護 Objective-C 代碼的基礎。