+ (void) инициализировать в конструкторе статических переменных класса target-c - PullRequest
10 голосов
/ 15 июня 2010

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

static UIImage *backgroundImageDepressed;

/**
 *
 */
@implementation DecimalPointButton

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

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

1 Ответ

17 голосов
/ 15 июня 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...