Я нашел несколько примеров кода здесь.
static UIImage *backgroundImageDepressed;
/**
*
*/
@implementation DecimalPointButton
+ (void) initialize {
backgroundImageDepressed = [[UIImage imageNamed:@"decimalKeyDownBackground.png"] retain];
}
Это что-то вроде этого - +(void) initialize
метод инициализирует статические переменные класса (интерфейса) в Objective C? Я никогда раньше этого не видел.
Ответ 1
Этот метод +initialize
описан в Objective-C Язык программирования.
Система времени выполнения отправляет сообщение initialize
каждому объекту класса , прежде чем класс получит любые другие сообщения и после того, как его суперкласс получит сообщение initialize
. Это дает классу возможность настроить среду выполнения перед ее использованием. Если инициализация не требуется, вам не нужно писать метод initialize
для ответа на сообщение.
Например, когда вызывается [DecimalPointButton alloc]
, среда выполнения проверяет, был ли вызов [DecimalPointButton initialize]
. Если нет, то класс +initialize
. Это гарантирует, что изображение backgroundImageDepressed
будет готово до создания любых экземпляров DecimalPointButton.