应该在alloc / new / init方法上使用instancetype吗?

时间:2013-05-30 21:18:04

标签: objective-c clang instancetype

根据clang documentation,当id是以instancetypenew开头的类方法时,隐含地知道返回alloc的方法返回retain ,或以autoreleaseinitselfinstancetype开头的实例方法。

为了保持一致性,是否还应编写这些方法以在新代码中显式返回- (instancetype)init { self = [super init]; if (self) { // perform initialization } return self; }

{{1}}

有没有关于为什么或为什么没有或任何推理的文件?在这种情况下,它似乎与编译器完全相同。

1 个答案:

答案 0 :(得分:18)

实际上并不是必需的,因为编译器会自动地促使这些方法有效地返回instancetype(如你所说)。

llvm文档中记录了此automatic inference

个人?我总是明确地将它们声明为instancetype,因为它完全描述了合同,并且以后更容易重构。