Теперь в objective-c есть две новые аннотации: nonnull и с нулевым значением.
Какой из них я должен использовать для спецификации типа возвращаемого значения метода init?
- (instancetype)init {
if (self = [super init]) {
// ...
}
}
Голос для с нулевым значением:
Существует "если", чтобы проверить, что возвращает [super init], и нет гарантии, что он никогда не вернет нуль.
Голос для nonnull:
Я не знаю реальных случаев, когда init возвращает nil, и я никогда не проверяю его.