代码之家  ›  专栏  ›  技术社区  ›  sagarkothari

+(void)在Objective-C类静态变量构造函数中初始化

  •  10
  • sagarkothari  · 技术社区  · 14 年前

    我从中找到了一些示例代码 here .

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

    像这样吗- +(void) initialize 方法初始化目标C中类(接口)的静态变量?我以前从没见过这个。

    1 回复  |  直到 7 年前
        1
  •  17
  •   kennytm    14 年前

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

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

    例如,当 [DecimalPointButton alloc] 调用时,运行时将检查 [DecimalPointButton initialize] 已被调用。如果不是,它会 +初始化 全班同学。这确保了 backgroundImageDepressed 图像已准备就绪 之前 构造小数点按钮的任何实例。