正如您可能已经经历过的那样,访问非线程安全变量是一件非常令人头痛的问题。对于iOS
,一个简单的解决方案是使用关键字 @synchronized
,这将添加NSLock
以确保数据可以由唯一的一个线程访问,缺点是下面:
锁定太多会大大降低应用程序性能,尤其是在主线程调用时。
逻辑变得复杂时会发生死锁。
-(id)objectForKey:(NSString *)key;
调用此类的人不会不愿意这样设计。任何有此领域经验的人请一起分享和讨论。
答案 0 :(得分:0)
最终的解决方案是使用NSUserDefault来存储小数据,对于大型缓存数据,将它们放在我们自己维护的文件中。
根据Apple doc,NSUserDefault的优点是线程安全,并且会定期同步工作。