在Objective-C类的静态变量构造函数中,+(void) initialize。

10

我从这里找到了一些示例代码。

static UIImage *backgroundImageDepressed;

/**
 *
 */
@implementation DecimalPointButton

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

这是否类似于 Objective C 中的 +(void) initialize 方法,用于初始化一个类(接口)的静态变量?我以前从未见过这种用法。

1个回答

17

这个+initialize方法在Objective-C编程语言中有所描述。

在一个类对象接收到其他消息之前,运行时系统会向每一个类对象发送一个initialize消息,并在其超类已经接收到initialize消息后才发送。这给了类一个机会,在使用之前设置其运行时环境。如果不需要初始化,则无需编写initialize方法响应该消息。

例如,当调用[DecimalPointButton alloc]时,运行时系统将检查是否已调用[DecimalPointButton initialize]。如果没有,它将对类进行+initialize。这确保构造任何DecimalPointButton实例之前backgroundImageDepressed图像已准备好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接