使用Objective C存储数据的最可靠,最快的类型或数据结构是什么?

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/NSMutableOrderedSet
  • 如果您想存储数据但不想要重复,并且其顺序也无关紧要,请使用NSSet/ NSMutableSet.
  • 如果要通过特定密钥访问数据,请使用NSDictionary/NSMutableDictionary

关于表现

要了解有关Objective-C数据类型和数据结构的更多信息,请阅读此内容