2010-06-15 73 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的任何實例都被構造。