gpt4 book ai didi

iphone - NSBlockOperation 泄露 ARC

转载 作者:行者123 更新时间:2023-12-03 20:42:49 29 4
gpt4 key购买 nike

我在引用 block 本身内的“NSBlockOperation”时遇到麻烦。我需要检查操作是否被取消,并且似乎在启用 ARC 的项目中运行时,对“searchOperation”的任何访问都会泄漏。

这段代码基本上什么都不做,在启用 ARC 的项目中显示了泄漏,而在非 ARC 项目中则工作正常。

- (void)viewDidLoad
{
[super viewDidLoad];

self.searchQueue = [[NSOperationQueue alloc] init];
self.searchQueue.maxConcurrentOperationCount = 1;

__block NSBlockOperation *searchOperation = [NSBlockOperation blockOperationWithBlock:^{
if (searchOperation.isCancelled) return;
}];

[self.searchQueue addOperation:searchOperation];
}

谢谢。

最佳答案

您已将 searchOperation 声明为 __weak 以避免保留周期:

__weak NSBlockOperation *searchOperation;
NSBlockOperation *tmp = [NSBlockOperation blockOperationWithBlock:^{
if (searchOperation.isCancelled) return;
}];
searchOperation = tmp;

另一种可能的解决方案:使用后在 block 内将 searchOperation 设置为 nil 。

关于iphone - NSBlockOperation 泄露 ARC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10634421/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com