我有这种情况,我只是调用类I的init使这个类成为NSObject的子类。
- (instancetype)initArray
{
self = [super init];
if (self) {
//Do Some Logic
}
return self;
}
这是来自App Delegate的电话
CategoryLoader *categoryLoader = [[CategoryLoader alloc]initArray];
让我疯狂的是:
请注意,Xcode都是6.3
我试过的解决方案:
以下是发生了什么的屏幕截图:
任何建议为什么它可以从NSObject返回nil,我接下来该怎么办?
谢谢
答案 0 :(得分:1)
NSObject
init
的实施永远不会返回nil
。这在NSObject Class Reference中有记载:尽管有些令人困惑,但关键部分是
NSObject
类中定义的init方法不进行初始化;它只是回归自我。
如果您正在观察它重新调整nil
,则无法设置某些内容(可能该类不是NSObject
的直接子类),或者您以某种方式错误地解释结果,或者在另一个层面上出现了问题。您在不同的计算机上观察到不同结果的事实表明它可能处于另一个级别,如Xcode,操作系统或硬件。我在那里帮不了多少;尝试重新启动。
此外,您的方法应该命名为init
而不是initArray
。这不是一项要求,而是一项非常强有力的惯例。您可以阅读Object Initialization in Apple’s Concepts in Objective-C Programming
答案 1 :(得分:1)
确定。那是问题所在:
该计划处于发布模式。在这种情况下,监视窗口在大多数对象中显示为nil。当我在NSLog上打印self的值时,它打印了它的值。我和另一个Xcode之间唯一的区别就是这个方案。
因此解决方案是编辑要调试的项目方案。
感谢您的支持