Как правильно выполнить код инициализации независимо от того, загружен ли объект из пера или создан программно? - PullRequest
4 голосов
/ 25 января 2010

Я заметил, что если вы загружаете связанные представления из пера, вы должны переопределить initWithCoder, если вы хотите добавить код инициализации, потому что назначенный инициализатор не вызывается (что имеет смысл), а если нет загрузить представление из кончика, затем тот же код должен быть выполнен в назначенном инициализаторе.

Таким образом, для обработки обоих случаев вам нужен один и тот же код инициализации в обоих методах.

Это лучшее решение, которое я когда-либо придумал, но мне интересно, есть ли какой-нибудь более традиционный способ сделать это. Этот код находится в подклассе UITableViewCell, но на самом деле это может быть любой UIView:

/*
 * Seems like there should be a standard method for this already.
 */
- (void)didFinishInitializingOrUnacrhiving {
    /*** Do stuff that makes the most sense to do in an initializer. ***/
}

- (id)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super initWithCoder:aDecoder]) {
        [self didFinishInitializingOrUnacrhiving];
    }
    return self;
}

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        [self didFinishInitializingOrUnacrhiving];
    }
    return self;
}

Так есть мысли по этому поводу? Это "правильный способ" делать что-то, есть ли здесь потенциальные подводные камни, или я просто что-то упускаю?

Ответы [ 2 ]

2 голосов
/ 04 февраля 2010
1 голос
/ 25 января 2010

Я делаю то же самое, за исключением того, что я ленив, и мой метод обычно называется -didInit.

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