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