objective-c - 每次调用 NSMutableArray 的计数方法时,NSMutableArray 是否真的对项目进行计数?

标签 objective-c nsmutablearray performance

由于cocoa设计模式的原因,NSMutableArray中的实例方法count的名字是有歧义的;它可以返回一个保存的变量 count,或者它可以在每次调用时计算数组中的项目,然后返回(cocoa 规定一个方法只返回变量 的值foofoo,而不是 getFoo)。 Objective C 的 NSMutableArray 是在每次调用其 count 方法时实际计算项目数,还是返回预先计算的变量的值?如果这是 Java,我会查看源代码,但我找不到 NSMutableArray 的源代码。我查看了 API,它所说的是这样的:

Returns the number of objects currently in the array.

由于没有上下文,我无法判断这是否意味着它在其中进行了任何计算。

最佳答案

正如您正确指出的那样,不能保证它会以一种方式或另一种方式运行。

但实际上,-[NSArray count] 是一个常量时间操作。您可以通过创建一个小数组和一个大数组并对获取它们的计数所需的时间进行基准测试来自己确认这一点。在像这样的核心数组类上使用 O(n) count 方法会很愚蠢。

关于objective-c - 每次调用 NSMutableArray 的计数方法时,NSMutableArray 是否真的对项目进行计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14637259/

相关文章:

iphone - 如何根据存储在其中的NSString重新排序NSMutable数组?

objective-c - 将 [touches anyObject] 更改为与数组中的任何对象接触

javascript - html中有类似 "load header first and body last"的东西吗?

.net - 提高使用具有许多子项的 MapLayer 时 Bing Maps for Silverlight 的性能

iOS坐标系错误

ios - 允许最后一个 UITableViewCell 滚动到第一行

ios - iPhone:目前适合所有 iPhone 屏幕的登录屏幕图像

objective-c - 已发布的 UIViewController 已正确销毁,但未调用其 -(void)dealloc 方法

ios - 在调用下一个方法之前代码未完成

C# 4 System.Threading.Tasks 性能询问