【发布时间】:2011-11-24 05:03:06
【问题描述】:
在 Java 中,我通常初始化特定大小的数组,然后随着代码的继续添加和替换对象。在 Objective C 中,我不能用 NSArray 做到这一点。我从 Java 移植过来的代码通常必须使用 NSMutableArray,我认为它的效率低于 NSArray。 (关于 NSMutableArray 如何存储它的成员,我最好的猜测是使用链表,但我可能是错的)
Objective C 中是否有任何类型的数组具有固定大小并允许在数组内进行更改?为什么不能用 NSArray 替换某个对象上的对象?我可以用 C 数组做到这一点,为什么不是 Objective C?
【问题讨论】:
-
Objective-C 只是 C 的超集。如果您愿意,可以使用 C 数组。不过,你为什么认为它更慢?你是如何测试它的?
-
我也不会解雇 NSMutableArray。它被广泛使用,除非您可以衡量性能问题,否则您可能会选择使用它。
-
CFMutableArray(从 NSMutableArray 免费桥接)保证 O(log N) 访问时间。这不能是链表。
-
从 Java 迁移到 Cocoa 时,无论在概念上还是在代码中,都用 NSMutableArray 替换您的列表。 Java Array 的等价物是 C 数组,当然,Java 本身就是从这个数组中来的。
标签: java objective-c arrays nsmutablearray nsarray