枚举崩溃时处理变异

时间:2014-09-29 12:10:39

标签: ios objective-c

有时候我会看到我的iOs应用程序崩溃:

  NSNumber *index = [[self.objectByIndex allKeysForObject:obj] lastObject];

崩溃是“突变时枚举”。

包含上述代码行的方法经常被调用...

解决此问题的最佳方法是什么?我应该把这一行放在@synchronize块中吗?

2 个答案:

答案 0 :(得分:1)

这意味着您在尝试访问它时会枚举您的obj。将obj的内容复制到newobj并从中检索NSNumber

答案 1 :(得分:0)

看起来你有竞争条件。另一个线程正在修改你的obj,而它被强制从allKeys中找到lastObject。因此,您必须将代码重新设计为多线程安全。

顺便说一句,如果经常调用这个代码,也许最好使用数组而不是字典,因为你可以比字典中的那个更快地检索数组的最后一个对象。