2010-08-28 226 views
2

我在嘗試確認Objective-C中的靜態變量初始化是否與C++中的相同。特別是在調用main()之前,靜態變量是否有被實例化或創建的可能性?靜態變量的初始化順序

回答

3

在Objective-C中沒有實例化靜態變量的概念。例如

// file level 
NSMutableArray* foo = [[NSMutableArray alloc] init]; 

是不允許的。它與C中的一樣:只能用常量初始化靜態變量。對於Objective-C對象,這意味着nil或文字字符串。

在Objective-C++中,你可以這樣做,它們在main()之前被調用。它只是遵循C++的Objective-C++規則的一部分。

如果要初始化與Objective-C中的類關聯的對象,請使用+initialize+load。看到這個nice blog article