2011-07-06 68 views
3

如何在我的Objective-C類中創建一個靜態變量?我熟悉在私有變量的頭文件中使用@private,但我試圖創建一個訪問靜態變量的靜態方法。我應該如何在頭文件中聲明這個靜態變量?Objective-C修飾符用於靜態?

+1

可能重複http://stackoverflow.com/questions/1063229/objective-c-static-class-level-variables) –

回答

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文件)中,在任何地方放置一個聲明(但理想的情況是在文件的頂部,或者只在一個地方訪問的相關方法)。

如果你想提供對這種靜態的控制訪問,將它放在任何方法實現之外,並使用類方法來訪問它。