我正在尝试确认Objective-C中的静态变量初始化是否与C ++相同。具体来说,静态变量是否有可能在调用main()之前实例化/创建?
答案 0 :(得分:3)
在Objective-C中没有静态变量实例化的概念。 e.g。
// file level
NSMutableArray* foo = [[NSMutableArray alloc] init];
是不允许的。它与C中的相同:您只能使用常量初始化静态变量。对于Objective-C对象,这意味着nil
或文字字符串。
在Objective-C ++中,您可以这样做,并在main()
之前调用它们。它遵循C ++的Objective-C ++规则的一部分。
如果要在Objective-C中初始化与类关联的对象,请使用+initialize
或+load
。请参阅此nice blog article。