你好,
在我的应用程序中,我创建了 NSOperations
并将它们添加到 NSOperationQueue
。
有时,我想从我的操作队列中取消一些特定的操作,这就是为什么我为我的 NSOperation 子类定义了一个标识符属性:
@property (nonatomic, assign) NSString *identifier;
但是当我循环进入我的队列的操作并且我想将我的操作的标识符与我想要获取的操作的标识符进行比较时,我得到一个 EXC_BAD_ACCESS
指出 if 条件:
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操作.标识符
)。
我说当它崩溃时,因为它并不总是崩溃,当它不崩溃时,标识符是正确的(我不确定是否非常清楚...)。
由于我是 NSOperation 的新手,我想知道是否有其他方法可以实现我想做的事情?
提前致谢!
最佳答案
最好有一个数组 operations:[MyCustomNSOperationClass]
(或字典 operations:[String: MyCustomNSOperationClass]
)来保存对队列中所有操作的引用,并且然后你直接取消它而不在队列中搜索它。
关于ios - 从 NSOperationQueue 获取特定的 NSOperation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34792638/