有时候我会看到我的iOs应用程序崩溃:
NSNumber *index = [[self.objectByIndex allKeysForObject:obj] lastObject];
崩溃是“突变时枚举”。
包含上述代码行的方法经常被调用...
解决此问题的最佳方法是什么?我应该把这一行放在@synchronize块中吗?
答案 0 :(得分:1)
这意味着您在尝试访问它时会枚举您的obj。将obj的内容复制到newobj并从中检索NSNumber
。
答案 1 :(得分:0)
看起来你有竞争条件。另一个线程正在修改你的obj,而它被强制从allKeys中找到lastObject。因此,您必须将代码重新设计为多线程安全。
顺便说一句,如果经常调用这个代码,也许最好使用数组而不是字典,因为你可以比字典中的那个更快地检索数组的最后一个对象。