因此,我正在使用Objective-C制作iPhone应用程序,并需要使用数组。通常在Objective-C中,我会使用NSArray或NSMutableArray,但是我开始怀疑当仅使用基本数组时,这是否是最好的想法。从内存和效率方面来看,当仅保留自定义对象的基本数组时,使用常规C数组还是Objective-C数组更有意义?在Objective-C编程时,您通常使用C数组还是Objective-C数组?谢谢!
因此,我正在使用Objective-C制作iPhone应用程序,并需要使用数组。通常在Objective-C中,我会使用NSArray或NSMutableArray,但是我开始怀疑当仅使用基本数组时,这是否是最好的想法。从内存和效率方面来看,当仅保留自定义对象的基本数组时,使用常规C数组还是Objective-C数组更有意义?在Objective-C编程时,您通常使用C数组还是Objective-C数组?谢谢!
除非我找到了不使用它们的充分理由,否则NSArray
是我的首选。
在几年的Cocoa编程中,我从未真正找到不使用它的好理由。我唯一能想到的情况是当我想要存储在数组中的内容不是对象时,或者我想存储对象但不希望它们被保留。然而,在这两种情况下,一个简单的CFMutableArrayRef
与自定义值回调就可以解决问题。
在罗马,就要随俗。
开发iPhone应用程序时,请使用NSArray或NSMutableArray,因为这是惯用的方法。
除非您有非常特殊的原因要使用普通的c数组,否则请遵循惯用的方法。
NSArray和NSMutableArray非常高效。如果性能还不是问题,那么没有理由为了使用纯C数组而使自己扭曲,当Objective-C对象更自然时 - 如果以后性能成为问题,那么您可以进行更多的优化。
Objective C数组(NSArray等)在处理实时多通道音频和/或实时视频的原始像素位时,效率极低,需要每秒触摸数百万次。以某种数据缓存线感知方式布置的纯C数据数组更为适合,而且在任何重要处理中可能使用的内存和电池功率要少得多。
请注意,您甚至不能将NSArray提供给加速框架,大多数核心音频、核心图形或OpenGL API也是如此。
对于很少接触的数据,例如每秒仅数千次或更少的速率,Objective C数组将有助于内存管理和数据抽象,而且它们的时间和内存惩罚可能很难测量。对于用户数据、UI元素、UI表格和其他以人类节奏进行的真正缓慢的事情非常有用。
这并不意味着在iPhone开发中没有使用C数组的地方 - 只是它们(可以理解的)使用很少。