c# - NSArray 的、原始类型和拳击哦,我的天哪!

标签 c# objective-c

我是 Objective-C 世界的新手,而且我在 .net/C# 方面有很长的历史,所以我自然而然地倾向于使用我的 C# 智慧。

现在问题来了:我真的很想创建某种类型的 简单 Objective-C 集合来保存原始类型,因为我不喜欢将原始类型包装到对象中的整个概念 (即 NSNumber),然后将其添加到 NSArray 等集合中。

问题是,我完全理解 NSArray 只对对象进行操作。然而,这对我来说真的很愚蠢,我们被迫使用盒装基元只是因为不存在可用于基元整数的集合。

所以 C# 人员会知道我在过去使用 .net 谈论的内容。通常,当泛型尚未出现时,您会使用简单数组或 ArrayList。 ArrayList 本质上是强制您将原始类型装箱,但它实际上是在幕后完成的,您为此付出了高昂的代价(在性能方面)。

如果您无法处理性能成本,那么您可以推出自己的自定义集合,或者最终在泛型出现时使用它们。

现在在 Objective-C 的世界里,我们不得不再次处理这个问题,但 Apple 开发人员似乎并不关心,或者这没什么大不了的。

所以我的问题是:这里推荐的做法是什么?例如,我应该尝试构建自己的自定义 Objective-C 集合来保存 NSI​​nteger 吗?或者我是否应该像这篇博文中的同事 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/

相关文章:

ios - 捕获正则表达式 iOS 时应用程序崩溃

ios - 如何在 iOS 的联系人 TableView 中实现搜索栏

c# - 延迟对象的收集

c# - XPathSelectElement 始终返回 null

ios - 使用 MMWormhole 将消息传递给 Apple Watch

ios - 设置对象 : forKey: crashes when used on multi-dim NSMuteableDictionary

objective-c - clang 可以为 Xcode 项目生成调用图吗(在 Objective-C 中?

C#如何调用多个参数

c# - 从 DataTable 映射到属性名称不同于列名称的自定义模型

c# - 需要根据母版页控件的值在同一页面上显示 2 个不同的横幅 Sprite