Cocoa Objective-C初始奇怪

Cocoa Objective-C初始奇怪,第1张

概述我正在审查一些代码并遇到了类似这样的东西(假设它是为TestObject类定义的) -(id) init{ if (self == [super init]) { self.testString = @"Hello"; } return self;} 我立刻改变了 if (self == [super init]) 至 if (self = [s 我正在审查一些代码并遇到了类似这样的东西(假设它是为TestObject类定义的)

-(ID) init{    if (self == [super init])    {        self.testString = @"Hello";    }    return self;}

我立刻改变了

if (self == [super init])

if (self = [super init])

但后来意识到(虽然我知道它不对)代码工作原样,我在一个超简单的程序中隔离了原始代码

TestObject* testObject = [[TestObject alloc] init];    NSLog(@"%@",testObject.testString);

令我惊讶的是,这很有效.为什么等式检查而不是赋值不会破坏事物?为什么是

self == [super init]

在我开始之前,在我分配它之前是真的吗?

@H_301_40@解决方法 已经为您分配了自我.将其分配给[super init]的目的是允许超类的-init实现返回不同的对象.我强烈推荐 The How and Why of Cocoa Initializers(Mike Ash)和 self = [stupid init];(Wil Shipley)更详细地讨论为什么这是(或不是)一个好主意.关于是否需要检查相等(==),您会发现不同的意见.

顺便说一句,如果您尝试使用任何其他方法分配给self,您会看到以下错误消息:

总结

以上是内存溢出为你收集整理的Cocoa Objective-C初始奇怪全部内容,希望文章能够帮你解决Cocoa Objective-C初始奇怪所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1007514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存