我有一个包含NSDictionary的类,并且我有一个线程将数据写入此NSDictionary。然后在其他时候,我有另一个视图控制器从类的NSDictionary中读取数据。
什么是使这个类中的数据成为线程安全的最佳目标-c方式,这样如果你要求数据“读取”,你就会得到正确的版本,即最后一个书面版本,而不是一个也许正在写入目前?
答案 0 :(得分:1)
正如卡尔所说,@synchronized
是一种选择。
如果您的目标是iOS 4.0+,则另一个使用Grand Central Dispatch队列来管理从多个线程/队列对共享数据结构的访问。 WWDC 2010 Session 211视频对此技术有很好的解释。
简而言之:您创建了一个自定义GCD队列(dispatch_queue_create()
),其唯一职责是管理对共享数据结构的访问。然后,访问共享结构的所有代码必须从此队列中执行此操作。因为队列一次只执行一个代码块,所以没有两个线程可以同时访问数据结构。
答案 1 :(得分:0)
我想你正在寻找@synchronize
。