【发布时间】:2016-04-19 22:42:29
【问题描述】:
为了避免在 Objective-C 中使用 NSBlockOperation 时发生内存泄漏,我们必须将变量声明为 weak 以便能够引用块内的块操作(如果需要可以取消),通常像这样:
__weak NSBlockOperation *blockOp = [NSBlockOperation blockOperationWithBlock:^{
if (blockOp.cancelled) {
...
}
}];
但是在 Swift 中,当我尝试将我的 NSBlockOpeartion 声明为弱时,它总是为零。
weak var blockOp = NSBlockOperation()
没有弱引用,一切都很好,只是每次都会泄漏一点内存。如何在 Swift 中引用块内的块而不泄漏内存?
【问题讨论】:
-
如果强引用为零,弱引用会自动归零....
-
您在 Obj-C 中通常会遇到完全相同的问题。
标签: swift memory-management nsoperation nsblockoperation