嗨,您好,
在我的应用程序中,我创建了NSOperations,然后将它们添加到NSOperationQueue中.
有时,我想从我的操作队列中取消一些特定的操作,这就是我为我的NSOperation子类定义了一个标识符属性的原因:
@property (nonatomic, assign) NSString *identifier;
但是当我循环进入队列的操作并且我想将我的操作标识符与我想要获取的操作的标识符进行比较时,我得到了一个指示if条件的EXC_BAD_ACCESS:
for (MyCustomNSOperationClass *operation in self.myOperationQueue.operations)
{
NSString *identifier = [self getRelatedIdentifier];
if ([operation.identifier isEqualToString:identifier])
{
[operation cancel];
}
}
操作的标识符应该类似于33a37fb0-8f77-0132-6c0b-5254005d9147,但是当它崩溃时,它就像0x7be4af00(当我使用po operation.identifier时).
我说当它崩溃时,因为它并不总是崩溃,当它没有崩溃时,那么标识符是正确的(我不确定是非常清楚……).
因为我是NSOperation的新手,我想知道是否还有其他方法可以实现我想做的事情?
提前致谢 !
最佳答案 最好有一个数组操作:[MyCustomNSOperationClass](或字典操作:[String:MyCustomNSOperationClass]),它保留对队列中所有操作的引用,然后直接取消它而不在队列中搜索它.