假设我想使用 NSObjects 的 C 样式数组而不是使用 NSArray。这对使用 NSArray 有任何性能损失吗?
问问题
1156 次
2 回答
3
没有性能损失,实际上在技术上应该有性能改进。你所交换的是相当多的NSArray
功能和合理数量的封装,如果你不小心的话,会给你一些语法上的麻烦和内存泄漏的风险。
也就是说,我开发的一个应用程序涉及二维数据数组。方便地,该阵列是预先知道的固定大小。我将其逻辑隐藏在NSArray
采用二维索引的自定义模拟中。早期的实现使用以NSIndexPath
s 作为键的字典。那很慢。我尝试了一个NSArray
of NSArray
s。那比较慢。我尝试了一个 2d C 数组,这明显更快。花时间来平衡我retain
的 s 和release
s 对性能没有不良影响。
于 2012-06-29T18:17:48.707 回答
2
尽管它没有性能损失,但肯定会损失灵活性:与NSMutableArray
s 不同,您的 C 数组是固定大小的。您也无法对 C 数组使用快速枚举,不得不求助于使用数组索引。
如果这些限制符合您的要求,那么 C 数组应该可以工作。它们也可以很好地与 ARC 配合使用:一旦 C 强引用数组超出范围,ARC 就会释放所有未设置为nil
.
于 2012-06-29T18:14:58.883 回答