如何在我的Objective-C類中創建一個靜態變量?我熟悉在私有變量的頭文件中使用@private,但我試圖創建一個訪問靜態變量的靜態方法。我應該如何在頭文件中聲明這個靜態變量?Objective-C修飾符用於靜態?
3
A
回答
1
Objective-C沒有靜態類變量。但是,您可以創建模塊靜態變量(就像在C中一樣)。要擁有一個私有的靜態變量:
//MyClass.m
static int MyStatic;
@implementation MyClass
@end
將給出MyStatic
模塊級作用域。因爲這只是C,所以沒有辦法使MyStatic可見,例如, MyClass上的類別,而不會通過extern
聲明使其公開。由於靜態變量實際上是全局變量,這可能是一件好事 - MyClass應該盡其所能隱藏MyStatic
的存在。
如果你想靜態變量是公共的(你真的不想):
//MyClass.h
extern int MyStatic;
@interface MyClass {}
@end
//MyClass.m
int MyStatic;
@implementation MyClass
@end
[Objective C的靜態類級變量(的
+0
在你的例子中,你是否忘記將MyStatic聲明爲static? – Kent
2
Objective-C的靜態變量遵循C(存儲修飾符)中靜態變量的相同規則。你可以在文件或函數範圍聲明你的靜態變量,但它們與你的類沒有關係,就像實例變量一樣。
3
Objective-C在這方面簡單地遵循C--你製作靜態文件變量。在你的實現(也就是你的.m文件)中,在任何地方放置一個聲明(但理想的情況是在文件的頂部,或者只在一個地方訪問的相關方法)。
如果你想提供對這種靜態的控制訪問,將它放在任何方法實現之外,並使用類方法來訪問它。
相關問題
- 1. 防止使用靜態修飾符
- 2. Eclipse JDT靜態字段修飾符
- 3. Java靜態修飾符查詢
- 4. 在「冗餘‘靜態’修飾符」警告
- 5. 理解靜態修飾符的問題
- 6. Java常量和靜態修飾符
- 7. 在C++中是靜態修飾符嗎?
- 8. 訪問修飾符是否適用於靜態類函數?
- 9. 什麼時候在PHP中使用靜態修飾符
- 10. 創建EventHandler時使用靜態修飾符有什麼意義?
- 11. 動態訪問修飾符
- 12. ObjectiveC中的靜態變量
- 13. 帶靜態訪問修飾符的最終變量
- 14. 爲什麼在這段代碼中需要靜態修飾符?
- 15. 「導入」後的「靜態」修飾符是什麼意思?
- 16. java中有沒有對靜態塊的訪問修飾符
- 17. 我修飾符不適用於外語?
- 18. 將修飾鍵應用於字符
- 19. CSS BEM,它用於修飾符..?
- 20. __strong修飾符
- 21. __printflike__修飾符
- 22. '出' 修飾符
- 23. AtTask修飾符
- 24. 動態方法訪問修飾符
- 25. 在TypeScript的函數中使用靜態修飾符有什麼好處嗎?
- 26. 頂級類或接口是否可以使用「靜態」修飾符?
- 27. 靜態修飾符在面向對象編程中的用途是什麼?
- 28. 在Java中如何以及在何處使用靜態修飾符?
- 29. @IonicPage修飾符已棄用?
- 30. FakeItEasy - 用new修飾符
可能重複http://stackoverflow.com/questions/1063229/objective-c-static-class-level-variables) –