我无法解释为什么我的代码崩溃了:
< __ NSCFSet:0x74957b0>在被枚举时被突变
以前我读过simular主题,但他们的问题是代码调用不同的线程。我的代码总是在线程1中调用。
它不时崩溃。
以下是发生这种情况的代码:
- (void)processReceivedResponse:(JTResponse *)aResponse {
NSParameterAssert(aResponse);
id <JTRequestDelegate> delegate = [self processResponseWithReceiver:aResponse];
if (delegate == nil) {
for (JTObserver *someObserver in observers) {
if (someObserver.requestType == aResponse.type &&
![someObserver.delegate isEqual:delegate]) {
[someObserver.delegate didReceiveResponse:aResponse];
}
}
}
}
答案 0 :(得分:3)
您获得的错误是由于在您循环播放时更改“观察者”设置的内容造成的。
很难说出你发布的片段可能是什么。您在someObserver上调用的委托中的某些内容是否会更改“观察者”集?
答案 1 :(得分:3)
您可以尝试简单地复制observers
集并循环复制:
for (JTObserver *someObserver in [[observers copy] autorelease]) {
...
}
如果您使用ARC(自动引用计数),则无需使用autorelease
。