首选哪种形式的Objective-C初始方法?
到目前为止,我已经看到了三种方法: 1: 2: 3:首选哪种形式的Objective-C初始方法?,objective-c,idioms,Objective C,Idioms,到目前为止,我已经看到了三种方法: 1: 2: 3: 哪种形式更惯用Objective-C?都是一样的,没关系。不过,我建议使用前两种方法中的一种。最后一个很少做 你可能找不到苹果在这方面的任何建议。它们声明,您应该将super的init返回值设置为self。如何做到这一点取决于你自己 这三种方法都是正确的,我们通常都是这样做的 - (id) init { self = [super init]; if (self != nil) { // your c
哪种形式更惯用Objective-C?都是一样的,没关系。不过,我建议使用前两种方法中的一种。最后一个很少做 你可能找不到苹果在这方面的任何建议。它们声明,您应该将super的init返回值设置为self。如何做到这一点取决于你自己
这三种方法都是正确的,我们通常都是这样做的
- (id) init
{
self = [super init];
if (self != nil)
{
// your code here
}
return self;
}
首选第一个或第二个。不需要检查它是否为nil,因为“if”条件将自动检查它。以下是使用init的标准方法
- (id)init
{
self = [super init];
if (self) {
<#initializations#>
}
return self;
}
-(id)init
{
self=[super init];
如果(自我){
}
回归自我;
}
- (instancetype)init
{
if (self = [super init])
{
// Initialization code here.
}
return self;
}
传统上,在Objective-C 1.0中,init方法返回
id
,从Objective-C 2.0的最新迭代开始,建议返回instancetype
。请引用Apple/NextStep/Objective-C文档或其他公认权威机构的支持性参考,我不是真的在寻找J.Random Developer的意见。请查看一个好的解释。它的情况和开发商必须作出选择。第3号需要有一个早期回报的价值。我知道这是一个“关闭的风险”,当我写它的时候,但我会争辩说,这是迄今为止的答案是没有建设性的,而不是任何固有的问题。我投票重新开放,因为它现在有超过1000个意见“流行问题”,因此很有用,并且公认的答案引用了有效的引用(现代和历史的Xcode默认值)。的确如此。这确实是一个品味问题。objC 2.0很长时间以来也使用id来实现此目的。与objC 2.0时代相比,instancetype的引入是一个相对较新的事件。
- (id) init
{
self = [super init];
if (self != nil)
{
// your code here
}
return self;
}
- (id)init
{
self = [super init];
if (self) {
<#initializations#>
}
return self;
}
- (instancetype)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
- (instancetype)init
{
if (self = [super init])
{
// Initialization code here.
}
return self;
}