我有:
1)同时启动 2 个异步 NSUrlRequests
2) 一旦两个请求之一加载了 XML 数据,就使用 NSOperationQueue 来启动 XML 解析器。因此,ParseOperations 的工作方式与 Apple 的 LazyTableImages 示例一样。
InfoRequestHelper.m
// ...
case GetBlogEntries:
{
BlogParseOperation *parser = [[BlogParseOperation alloc] initWithXMLString:result delegate:self];
parser.tag = helper.requestTag;
[queue addOperation:parser]; // this will start the "ParseOperation"
[parser release];
break;
}
case GetTweets:
{
TwitterParseOperation *parser = [[TwitterParseOperation alloc] initWithXMLString:result delegate:self];
parser.tag = helper.requestTag;
[queue addOperation:parser]; // this will start the "ParseOperation"
[parser release];
break;
}
// ...
3) 当解析完成 parser:didFinishParsing: 触发。
InfoRequestHelper.m
- (void)parser:(ParseOperationBase *)parser didFinishParsing:(NSArray *)entries
{
// Save data, remove completed request from list
[self.requestsInProgress removeObjectForKey:parser.tag];
[self.resultObjects addObjectsFromArray:entries]; // <= !!! EXC_BAD_ACCESS !!! here
// ..
}
问题:当第一个事件到达这里时,可以将对象添加到数组中。但是当第二个到达时,有一个 EXC_BAD_ACCESS。