gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:21:37 24 4
gpt4 key购买 nike

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

目前,我只在分配具有较大预定容量的可变集合(例如 [NSMutableArray arrayWithCapacity: 1000])或具有大量对象(超过一千个)的不可变集合时进行检查.

谢谢。

最佳答案

不,不是 NSArrayNSArray 是一个使用结构的链表,因此它在幕后不会有太多的malloc。检查 nil,至少使用 NSArray 是毫无意义的。

但是,如果您使用的是像 CCArray 这样的集合类,例如来自 cocos2d,那么使用大型数组检查 nil 可能会有所帮助。

不过,iOS 上指针的大小是 8 个字节,即使是 1000 个元素的 C 数组也只有 8 KB 的 RAM。在大多数情况下,您不会使用足够的内存来耗尽内存。

另请注意,如果您的应用程序内存不足,您可以注册许多委托(delegate)方法以收到警告并修复它。

关于objective-c - 我应该总是检查 [[NSArray alloc] init ...] 是否返回 nil 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9454434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com