我有这种情况,我只是调用类的 init 我使这个类是 NSObject 的子类。
- (instancetype)initArray
{
self = [super init];
if (self) {
//Do Some Logic
}
return self;
}
这是我来自应用代表的电话
CategoryLoader *categoryLoader = [[CategoryLoader alloc]initArray];
让我抓狂的是:
- 虽然它返回 nil,但它进入了 if 条件
- 它不会在其他计算机上使用其他 Xcode 返回 nil
请注意,两个 Xcode 都是 6.3
我尝试过的解决方案:
- 清理 Xcode 的缓存
- 删除了类(class)并创建了一个新类(class)
- 重新安装 Xcode
这是发生的事情的屏幕截图:
有什么建议为什么它会从 NSObject 返回 nil,接下来我该怎么做?
谢谢
Best Answer-推荐答案 strong>
NSObject 的 init 实现不应该返回 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/
|