我应该总是检查[[NSArray alloc] init ...]是否返回nil?

时间:2012-02-26 15:45:29

标签: objective-c ios cocoa collections nsarray

我是否应该始终检查[[NSArray alloc] init…](或其他任何集合类)是否返回nil? Apple文档说,如果分配或初始化失败,对象可能会返回nil。我不知道何时初始化可能会失败NSArray,但我猜这个分配可能因内存不足而失败。而且因为我正在为iOS开发,这可能会成为一个常见的问题。我是否必须这样做并检查每个时间我想创建一个新数组,或者我的应用程序因内存限制而失败(当然,假设最坏情况)并检查{{1只是浪费周期?

目前,我只是在检查何时分配具有较大预定容量的可变集合(例如nil)或具有大量对象的可变集合(超过一千)。

谢谢。

1 个答案:

答案 0 :(得分:2)

不,不是NSArrayNSArray是使用结构的链接列表,因此它在幕后不会malloc。检查nil,至少用NSArray检查是没有意义的。

但是,如果你使用像cocos2d这样的集合类CCArray,那么用大数组检查nil可能是有益的。

然而,iOS上指针的大小是8个字节,甚至1000个元素的C-Array也只有8 KB的RAM。在大多数情况下,您将不会使用足够的内存来达到用完的程度。

另请注意,如果您的应用程序内存不足,可以注册许多委托方法,以便对此进行警告并进行修复。