[NSMutableArray数组]可以返回nil吗?

时间:2013-05-14 10:56:17

标签: ios memory nsmutablearray

例如在低内存条件下。我正在阅读第三方代码,我看到了这个

NSMutableArray *array = [NSMutableArray array];

if (array != nil) {

    [array addObject:anObject];
}

在创建数组之后我也从来没有检查过这个问题,alloc+init但是现在我有疑问。

3 个答案:

答案 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上的方法调用。我只是谈论你的示例代码。