Tom*_*min 2 iphone objective-c nsblockoperation
我在引用块本身内的 \xc2\xb4NSBlockOperation\xc2\xb4 时遇到麻烦。我需要检查操作是否被取消,并且似乎在启用 ARC 的项目中运行时,对 \xc2\xb4searchOperation\xc2\xb4 的任何访问都会泄漏。
\n\n这段代码基本上什么也不做,在启用 ARC 的项目中显示了泄漏,而在非 ARC 项目中则工作正常。
\n\n- (void)viewDidLoad\n{\n [super viewDidLoad];\n\n self.searchQueue = [[NSOperationQueue alloc] init];\n self.searchQueue.maxConcurrentOperationCount = 1;\n\n __block NSBlockOperation *searchOperation = [NSBlockOperation blockOperationWithBlock:^{\n if (searchOperation.isCancelled) return;\n }];\n\n [self.searchQueue addOperation:searchOperation];\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n谢谢。
\n您已声明 searchOperation 以__weak
避免保留循环:
__weak NSBlockOperation *searchOperation;
NSBlockOperation *tmp = [NSBlockOperation blockOperationWithBlock:^{
if (searchOperation.isCancelled) return;
}];
searchOperation = tmp;
Run Code Online (Sandbox Code Playgroud)
另一种可能的解决方案:使用后在块内将 searchOperation 设置为 nil 。