2010-06-15 41 views
10

我发现从here一些示例代码。+(无效)初始化在Objective-C类静态变量构造函数

static UIImage *backgroundImageDepressed; 

/** 
* 
*/ 
@implementation DecimalPointButton 

+ (void) initialize { 
    backgroundImageDepressed = [[UIImage imageNamed:@"decimalKeyDownBackground.png"] retain]; 
} 

是这样的 - +(void) initialize方法在目标C中初始化一个类(接口)的静态变量?我从来没有见过这个。

回答

17

这个+initialize方法描述在The Objective-C Programming Language

运行时系统发送一个initialize消息给每个类对象类接收到任何其它的消息之前和它的超类之后已接收到initialize消息。这使得该类有机会在使用之前设置其运行时环境。如果不需要初始化,则不需要编写initialize方法来响应消息。

例如,当调用[DecimalPointButton alloc]时,运行时将检查是否已调用[DecimalPointButton initialize]。如果不是的话,它将会是+initialize这个班。这确保backgroundImageDepressed图像准备好之前 DecimalPointButton的任何实例都被构造。