Что такое различие Разногласия между:iPhone - использование самости = [супер INIT], когда [супер INIT] не
// 1
-(id) init {
self = [super init];
if (self) {
... do init ....
}
return self;
}
// 2 - I guess it's exactly the same as previous
-(id) init {
if (self = [super init]) {
... do init ....
}
return self;
}
// 3 - is this one a really bad idea and if yes, Why ?
-(id) init {
self = [super init];
if (!self) return nil;
... do init ....
return self;
}
// 4 - I think this one sounds OK, no ? But what is returned... nil ?
-(id) init {
self = [super init];
if (!self) return self;
... do init ....
return self;
}
EDIT: Добавлена благодаря Петру М.
// 5 - I really like the readability of this one
-(id) init {
if(!(self = [super init])) return self; // or nil
... do init ....
return self;
}
Избегайте негативные проверки? Зачем? 3 будет фактически рекомендован любыми стандартами кодирования. – Sulthan
Sulthan, можете ли вы указать мне на любой ресурс? С моей точки зрения, если Apple не решила использовать 3, вполне вероятно, что нам будет лучше. ;-) – joshis
Вы когда-нибудь читали примеры Apple? :) Их код часто абсолютно нечитабельен, поэтому я бы никогда не посмел сказать «Apple его использует, вот почему это лучше». Я не могу предоставить никаких ссылок. Стандарты кодирования обычно основаны на опыте людей, и я не мог найти ни одного, который мог бы охватить эту тему. Вы бы вложили весь элемент функции/метода в один оператор 'if'? Почему метод 'init' должен быть особенным? – Sulthan