首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSBlockOperation泄露弧线

NSBlockOperation泄露弧线
EN

Stack Overflow用户
提问于 2012-05-17 18:59:31
回答 1查看 940关注 0票数 2

我在引用代码块内部的“NSBlockOperation”时遇到了麻烦。我需要检查操作是否被取消,当在一个启用了ARC的项目中运行时,似乎对“searchOperation”的任何访问都会泄漏。

这段代码基本上什么也不做,它显示了启用ARC的项目中的泄漏,而在非ARC项目中运行良好。

代码语言:javascript
复制
- (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];
}

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-17 19:10:51

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

代码语言:javascript
复制
__weak NSBlockOperation *searchOperation;
NSBlockOperation *tmp = [NSBlockOperation blockOperationWithBlock:^{
    if (searchOperation.isCancelled) return;
}];
searchOperation = tmp;

另一种可能的解决方案是:在使用searchOperation之后,在块中将它设置为零。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10634421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档