2010-08-28 183 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