У меня есть общий вопрос о написании методов 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 и получил нуль, то что-то должно быть действительно завинчено, верно? И в этом случае вы могли бы даже не писать программу...
Действительно ли это так, что метод init init может возвращать нуль? Если да, то в каком случае и почему?