Dar*_*kas 3 objective-c nsdictionary nsarray nsset ios
我正在寻找使用Objective C在我的应用程序(Mac OS X或iOS)上存储大量相同类型原语的类型或数据结构.据我所知,NSNumber只存储一个原语(如果我错了,请纠正我).比方说,我有数千个整数或字符串.哪个是在那里放置,存储和访问它们的最佳解决方案?NSSet,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary还是其他什么?我知道它们有不同的功能,但我基本上只关心基本操作(放置,存储,检索)的性能.
Bur*_*ala 10
它仅取决于您希望如何添加,存储和删除此数据.
首先让我们来看看Objective-C中可用的每种类型的数据结构:
原始数组
这是Objective-C(或C)中最基本的存储类型,用于存储基元.例如:int a[4] = {1, 2, 3, 4};
对此的限制是
NSArray的
这是一个用于存储对象的容器.可以存储任何类型NSObject(或继承自NSObject)或类型为"id"的对象NSArray.
NSMutableArray里
同样NSArray,但是
的NSSet
和NSArray但是一样
的NSMutableSet
同样NSSet,但是
NSOrderedSet
同样NSArray,即对象由索引存储和检索,但是
NSMutableOrderedSet
同样NSMutableArray,但是
的NSDictionary
可以存储任何类型的数据.
的NSMutableDictionary
与...一样 NSDictionary
这是关于Objective-C中主要使用的数据结构的简短描述.这些是根据程序的需要以及如何操作数据来使用的.
因此,
NSMutableArray.如果您将来不打算添加,删除或修改任何对象,请使用NSArray.NSOrderedSet/NSMutableOrderedSetNSSet/ NSMutableSet.NSDictionary/NSMutableDictionary关于表现
NSSet不包含任何订单,因此它们的性能更高NSArray这是一篇关于上面讨论的每个数据结构的性能特征的非常好的详细文章
Class                      Time [ms]    1,000,000 elements
Run Code Online (Sandbox Code Playgroud)
添加
NSMutableOrderedSet         3190.52
NSMutableDictionary         2522.47
NSMutableSet                2511.96
NSMutableArray              1423.26
NSSet                          8.03
Run Code Online (Sandbox Code Playgroud)
随机访问
NSMutableOrderedSet           10.74
NSMutableDictionary            9.18
NSMutableArray                 8.08
NSMutableSet                   4.47
NSSet                          3.56
Run Code Online (Sandbox Code Playgroud)要了解有关Objective-C数据类型和数据结构的更多信息,请阅读此内容
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1739 次  |  
        
|   最近记录:  |