Цель C: Мой пользовательский метод не вызывается - PullRequest
6 голосов
/ 20 ноября 2011

У меня есть класс, который я извлекаю из UIView, и я хотел создать для него класс -init, например:

- (id) init
{
    if (self = [super init]) {
        // my initializations here
    }
    return self;
}

К сожалению, я точно знаю, что -init не получаетназывается.Вот как я определяю это в моем .h:

-(id)init;

Кто-нибудь знает, почему он не вызывается?

ADDENDUM:

Я обнаружил, что когда я помещаю свою инициализацию в initWithCoder, она запускается просто отлично.Я добавил initWithFrame, но он не был вызван.

Это для объекта, который я указал в IB.

1 Ответ

13 голосов
/ 20 ноября 2011

Есть два назначенных инициализатора для UIViewController и UIView, они initWithCoder вызываются из nib, а initWithFrame вызываются из кода.Init не назначен инициализатор для этих объектов.

Если вы хотите покрыть обе базы, вы можете сделать что-то вроде этого:

-(void)initializationCodeMethod{
    <#Initialization Code Here#>
}
-(id)initWithFrame:(CGRect)frame{
    if ((self = [super initWithFrame:frame])){
        [self initializationCodeMethod];
    }
    return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder{
    if ((self = [super initWithCoder:aDecoder])){
        [self initializationCodeMethod];
    }
    return self;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...