我的 iPhone 客户端大量参与异步请求,很多时候不断修改字典或数组的静态集合。因此,我经常看到较大的数据结构需要更长时间才能从服务器检索并出现以下错误:
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFArray: 0x3777c0> was mutated while being enumerated.'
这通常意味着对服务器的两个请求会返回试图修改同一个集合的数据。我正在寻找的是关于如何正确构建我的代码以避免这种有害错误的教程/示例/理解。我确实相信正确的答案是互斥锁,但我还没有亲自使用过它们。
这是使用 NSURLConnection 发出异步 HTTP 请求,然后在请求完成后使用 NSNotification Center 作为委托方式的结果。当触发改变相同集合集的请求时,我们会遇到这些冲突。