В Objective-C, почему я должен проверить, если self = [super init] не ноль?
У меня есть общий вопрос о написании методов инициализации в Objective-C.
Я вижу везде (код Apple, книги, открытый исходный код и т. Д.), Что метод init должен проверить, не равен ли self = [super init] ноль, прежде чем продолжить инициализацию.
Шаблон Apple по умолчанию для метода init:
- (id) init
{
self = [super init];
if (self != nil)
{
// your code here
}
return self;
}
Почему?
Я имею в виду, когда init когда-нибудь вернет ноль? Если я вызвал init в NSObject и получил nil обратно, то что-то должно быть действительно испорчено, верно? И в этом случае вы могли бы даже не написать программу ...
Действительно ли так часто, что метод init класса может возвращать ноль? Если да, то в каком случае и почему?