在编写Objective-C类时,我使用以下便捷方法结构:
+ (MyClass *) myClass {
return [[[self alloc] init] autorelease];
}
- (id) init {
if (self = [super init]) {
// set-up code here...
}
return self;
}
为什么便捷方法应该指定返回类型MyClass*
而不是id
?或者init
方法应指定返回类型?
这似乎是Objective-C代码中的常见模式。直到现在才真正想过它。
答案 0 :(得分:4)
最好的选择是返回instancetype
- 一个上下文关键字,可以用作结果类型来表示方法返回相关的结果类型。
查看this post on NSHipster.
答案 1 :(得分:3)
我认为instancetype
现在是建议的方法:
+ (instancetype) myClass {
return [[[self alloc] init] autorelease];
}
- (id) init {
if (self = [super init]) {
// set-up code here...
}
return self;
}