检查操作队列中的重复项时的EXC_BAD_ACCESS

时间:2013-09-11 23:24:16

标签: objective-c nsoperation nsoperationqueue

我的应用中有一个处理端点URL请求的NSOperationQueue。为避免添加重复请求,我尽可能检查队列以查看是否已处理此端点调用。

出于某种原因,通常只有当端点操作队列像地狱一样被垃圾邮件发送,而且在其他时间也随机发送(意味着我认为这种情况非常罕见),我在扫描操作时会得到一个EXC_BAD_ACCESS队列重复。它发生在这一行:

 if (![endpointOperation.urlRequest respondsToSelector: @selector(URL)]) {

以下是代码:

-(BOOL)operationQueueContainsDuplicateOperations
{
    for (EndpointOperation *endpointOperation in [EndpointOperationQueueManager instance].operationQueue.operations) {

        if (![endpointOperation.urlRequest respondsToSelector: @selector(URL)]) {
            return NO;
        }

        if (![self.urlRequest respondsToSelector: @selector(URL)]) {
            return NO;
        }

        if ([[endpointOperation.urlRequest.URL absoluteString] isEqualToString:[self.urlRequest.URL absoluteString]] &&
            (self.relatedProfileIds && [endpointOperation.relatedProfileIds isEqualToArray:self.relatedProfileIds])) {

            return YES;
        }
    }

    return NO;

}

我想也许正在修改操作队列,而这个循环正在进行中,但我不知道会发生什么 - 当我收到崩溃时,我可以查看相关对象的内容,看起来很好。有什么想法吗?

0 个答案:

没有答案