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

Я нашел некоторый пример кода отсюда.

static UIImage *backgroundImageDepressed;

/**
 *
 */
@implementation DecimalPointButton

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

Это - что-то вроде этого - +(void) initialize метод инициализирует статические переменные класса (интерфейс) в Objective C? Я никогда не видел это прежде.

10
задан halfer 16 January 2018 в 19:54
поделиться

1 ответ

Этот метод + инициализация описан в Язык программирования Objective-C .

Среда выполнения отправляет сообщение инициализировать каждому объекту класса до того, как класс получит любые другие сообщения , и после того, как его суперкласс получит сообщение инициализировать . Это дает классу возможность настроить среду выполнения перед использованием. Если инициализация не требуется, вам не нужно писать метод initialize для ответа на сообщение.

Например, когда вызывается [DecimalPointButton alloc] , среда выполнения проверяет, был ли вызван [DecimalPointButton initialize] . В противном случае он + инициализирует класс. Это гарантирует, что изображение backgroundImageDepressed будет готово до создания любых экземпляров DecimalPointButton.

17
ответ дан 3 December 2019 в 21:19
поделиться