我运行此代码在5类的实例:当你运行self = [super init]并返回nil时,什么是正确的响应?
-(id)init {
self = [super init];
if (self) {
// my init code here
}
return self;
}
...和自我回报为零。我知道这是正确的程序,应该完成。但是,如果自我回归零,我的回应是什么?抛出警告程序失败并正在终止?忽略它 ?或者是否有推荐的程序安全地继续?
我把它看作Objective-C的一个错误,可以让你发送消息给nil。这意味着你可能会耗尽内存,直到很长一段时间后,当你不知道如何优雅地处理问题时,才会发现它。 –
你将如何精确地用完内存? –
@Don从-init方法返回nil表示初始化过程失败。如果你的内存不足,+ alloc将返回零,-init永远不会被调用。我更喜欢Objective-C范例。每当您创建一个新对象或收到一个对象作为方法参数时,您忘记检查返回值,您不必担心NULL指针异常。你只需要明确地检查你的应用中重要的那些。 –