3

假设我想使用 NSObjects 的 C 样式数组而不是使用 NSArray。这对使用 NSArray 有任何性能损失吗?

4

2 回答 2

3

没有性能损失,实际上在技术上应该有性能改进。你所交换的是相当多的NSArray功能和合理数量的封装,如果你不小心的话,会给你一些语法上的麻烦和内存泄漏的风险。

也就是说,我开发的一个应用程序涉及二维数据数组。方便地,该阵列是预先知道的固定大小。我将其逻辑隐藏在NSArray采用二维索引的自定义模拟中。早期的实现使用以NSIndexPaths 作为键的字典。那很慢。我尝试了一个NSArrayof NSArrays。那比较慢。我尝试了一个 2d C 数组,这明显更快。花时间来平衡我retain的 s 和releases 对性能没有不良影响。

于 2012-06-29T18:17:48.707 回答
2

尽管它没有性能损失,但肯定会损失灵活性:与NSMutableArrays 不同,您的 C 数组是固定大小的。您也无法对 C 数组使用快速枚举,不得不求助于使用数组索引。

如果这些限制符合您的要求,那么 C 数组应该可以工作。它们也可以很好地与 ARC 配合使用:一旦 C 强引用数组超出范围,ARC 就会释放所有未设置为nil.

于 2012-06-29T18:14:58.883 回答