【问题标题】:Will this make the block leak?这会导致块泄漏吗?
【发布时间】:2016-06-20 11:23:43
【问题描述】:

这些代码中的任何一个会导致块被永久分配到内存上吗?我的意思是,块内部对外部强微调器的引用?

UIActivityIndicatorView *spinner = (UIActivityIndicatorView *)[cell viewWithTag:1];

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
  [spinner startAnimating];
}];

UIActivityIndicatorView *spinner = (UIActivityIndicatorView *)[cell viewWithTag:1];

[self.queue addOperationWithBlock:^{
  [spinner startAnimating];
}];

【问题讨论】:

    标签: ios iphone objective-c-blocks


    【解决方案1】:

    不,不会的。微调器归其超级视图所有。变量 spinner 可能是一个局部变量,因此一旦超出范围,它就会停止保留 spinner。同样,该块运行一次然后停止,因此一旦完成它就不会保留微调器。

    【讨论】:

    • 但假设微调器被分配在那条线上它会泄漏,对吗?啊,我在想相反的方式……拿着积木的旋转器。
    猜你喜欢
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多