我是 Objective-C 世界的新手,而且我在 .net/C# 方面有很长的历史,所以我自然而然地倾向于使用我的 C# 智慧。
现在问题来了:我真的很想创建某种类型的 简单 Objective-C 集合来保存原始类型,因为我不喜欢将原始类型包装到对象中的整个概念 (即 NSNumber),然后将其添加到 NSArray 等集合中。
问题是,我完全理解 NSArray 只对对象进行操作。然而,这对我来说真的很愚蠢,我们被迫使用盒装基元只是因为不存在可用于基元整数的集合。
所以 C# 人员会知道我在过去使用 .net 谈论的内容。通常,当泛型尚未出现时,您会使用简单数组或 ArrayList。 ArrayList 本质上是强制您将原始类型装箱,但它实际上是在幕后完成的,您为此付出了高昂的代价(在性能方面)。
如果您无法处理性能成本,那么您可以推出自己的自定义集合,或者最终在泛型出现时使用它们。
现在在 Objective-C 的世界里,我们不得不再次处理这个问题,但 Apple 开发人员似乎并不关心,或者这没什么大不了的。
所以我的问题是:这里推荐的做法是什么?例如,我应该尝试构建自己的自定义 Objective-C 集合来保存 NSInteger 吗?或者我是否应该像这篇博文中的同事 Memo 建议的那样使用 native C 数组:NSArray vs. C Array performance
或者我只是坚持使用 Apple 的内置集合并咬紧牙关。它表明,在构建性能关键型应用程序时,Memo 解释的性能特征值得考虑。
这篇文章很啰嗦,但我不得不把它从胸前说出来。
最佳答案
我个人建议使用 Objective-C++ 和 std::vector<>;除非您确实需要使用 native Objective-C 容器,否则您将不得不使用对象。
关于c# - NSArray 的、原始类型和拳击哦,我的天哪!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1727102/