+ (void) инициализировать в конструкторе статических переменных класса objective-c

Я нашел несколько примеров кода здесь.

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.