Метод инициализации подклассов в target-c - PullRequest
1 голос
/ 18 января 2012

У меня есть класс Foo, который реализует метод +(void)initialize.У меня также есть класс, который является подклассом Foo.Когда я создаю экземпляр подкласса, метод initialize также вызывается для Foo, что мне не нужно.Как мне предотвратить это?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 18 января 2012

В вашем сценарии (когда задействованы подклассы) вы должны проверить класс, в который отправляется метод initialize:

+ (void) initialize
{
    if ( self == [MyClass class] )
    {
        // Do something here only once
    }
}
1 голос
/ 18 января 2012

Вам также потребуется реализовать + (void)initialize в вашем подклассе. Обычно люди звонят [super initialize], но вы захотите пропустить этот шаг. Пустой метод предотвратит вызов Foo.

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

0 голосов
/ 08 мая 2012

Я решил это, не реализовав инициализацию, а просто вызвав метод установки

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