我是否应该始终检查[[NSArray alloc] init…]
(或其他任何集合类)是否返回nil
? Apple文档说,如果分配或初始化失败,对象可能会返回nil
。我不知道何时初始化可能会失败NSArray
,但我猜这个分配可能因内存不足而失败。而且因为我正在为iOS开发,这可能会成为一个常见的问题。我是否必须这样做并检查每个时间我想创建一个新数组,或者我的应用程序因内存限制而失败(当然,假设最坏情况)并检查{{1只是浪费周期?
目前,我只是在检查何时分配具有较大预定容量的可变集合(例如nil
)或具有大量对象的可变集合(超过一千)。
谢谢。
答案 0 :(得分:2)
不,不是NSArray
。 NSArray
是使用结构的链接列表,因此它在幕后不会malloc
。检查nil,至少用NSArray
检查是没有意义的。
但是,如果你使用像cocos2d这样的集合类CCArray
,那么用大数组检查nil可能是有益的。
然而,iOS上指针的大小是8个字节,甚至1000个元素的C-Array也只有8 KB的RAM。在大多数情况下,您将不会使用足够的内存来达到用完的程度。
另请注意,如果您的应用程序内存不足,可以注册许多委托方法,以便对此进行警告并进行修复。