gpt4 book ai didi

ios - super 初始化返回零

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:27 24 4
gpt4 key购买 nike

我遇到过这种情况,我只是调用我创建的类的 init,这个类是 NSObject 的子类。

- (instancetype)initArray
{
self = [super init];

if (self) {
//Do Some Logic
}
return self;
}

这是来自 App Delegate 的电话

    CategoryLoader *categoryLoader = [[CategoryLoader alloc]initArray];

让我抓狂的是:

  • 虽然它返回 nil 但它进入了 if 条件
  • 它不会在其他计算机上使用其他 Xcode 返回 nil

请注意,两个 Xcode 都是 6.3

我尝试过的解决方案:

  • 清理 Xcode 缓存
  • 删除了类(class)并创建了一个新类(class)
  • 重新安装 Xcode

这是发生了什么的截图:

Screenshot

关于为什么它会从 NSObject 返回 nil 的任何建议以及我下一步该做什么?

谢谢

最佳答案

NSObjectinit 实现不应该返回 nil。这记录在 NSObject Class Reference 中: 虽然有点困惑,但关键部分是

The init method defined in the NSObject class does no initialization; it simply returns self.

如果您观察到它重新调整 nil,要么是某些地方没有按照您的期望设置(也许该类不是 NSObject 的直接子类),要么您是以某种方式错误地解释了结果,或者在另一个层面上出现了问题。您在不同机器上观察到不同结果的事实表明它可能处于另一个级别,例如 Xcode、操作系统或硬件。我帮不上什么忙;尝试重新启动。

此外,您的方法应该命名为 init 而不是 initArray。这不是一个要求,而是一个非常严格的约定。您可以阅读有关 Object Initialization in Apple’s Concepts in Objective-C Programming 的信息

关于ios - super 初始化返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29770694/

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