gpt4 book ai didi

objective-c - 为什么 ((self=[super init]]) 有效,但 (!(self=[super init])) 无效?

转载 作者:可可西里 更新时间:2023-11-01 04:42:48 24 4
gpt4 key购买 nike

出于审美原因,我决定改变这个:

if ((self = [super init])) {
// init self
}
return self;

进入这个:

if (!(self = [super init])) return nil;
// init self
return self;

理论上,它们做同样的事情。第一个是经典方式,简单有效。调试第二个,发现差不多可以了。 “if”做对了,初始化代码也是,但是,在返回“self”之后,调试器回到“if”并返回 nil!

我用第二个类(class)制作的所有类(class)我都恢复使用“正确”的方式,因为它们是用 nil 启动的,但我真的很想知道为什么它会那样做!恐怕这可能是其他错误的结果!

最佳答案

除了审美偏好之外,您的两个版本之间绝对没有区别,所以一定是其他地方出了问题。也许您应该发布整个 init 方法?

关于objective-c - 为什么 ((self=[super init]]) 有效,但 (!(self=[super init])) 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5921194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com