В соответствии с clang documentation метод, возвращающий id
, неявно известен, возвращает instancetype
, когда это метод класса, начинающийся с new
или alloc
, или метод экземпляра, начинающийся с retain
, autorelease
, init
или self
.
Чтобы согласованность, должны ли эти методы также быть записаны для явного возврата instancetype
в новый код?
- (instancetype)init {
self = [super init];
if (self) {
// perform initialization
}
return self;
}
Есть ли какая-либо документация о том, почему или почему нет, или какие-либо рассуждения? Кажется, что в этом случае он точно интерпретировал компилятор.