例如在低内存条件下。我正在阅读第三方代码,我看到了这个
NSMutableArray *array = [NSMutableArray array];
if (array != nil) {
[array addObject:anObject];
}
在创建数组之后我也从来没有检查过这个问题,alloc+init
但是现在我有疑问。
答案 0 :(得分:4)
是。除非方法另有说明,否则因任何原因失败的对象实例化应返回nil。
答案 1 :(得分:4)
从技术上讲,可以返回nil
。
此时出现这种失败的可能性非常小。在返回nil
之前,您的应用可能会崩溃或中止。考虑一下malloc
返回NULL
的可能性不大。
我的实现多年来一直使用已检查的对象创建 - 我不记得在开发/测试中我曾经看到[NSMutableArray array]
返回nil
。
请注意,此答案特定于[NSMutableArray array]
,而不是现有的任何/每个初始化程序/构造函数。在这方面,[NSMutableArray array]
几乎是最“一致”的初始化/构造函数类,因为在正常情况下它没有理由失败。
答案 2 :(得分:0)
不需要nil
检查。 [NSMutableArray array]
很少返回零。如果它到达(内存)情况,此方法返回nil
,您的应用程序就像杀死一样好。
该方法失败的唯一可能情况是在内存受限的情况下。如果没有像内存警告和清除后台应用程序之类的足够动作,iOS永远不会让内存下降那么多。
同样在您的示例代码中,即使数组为nil
,您也不需要检查nil,因为忽略nil
上的方法调用。我只是谈论你的示例代码。