【发布时间】:2013-10-07 14:51:17
【问题描述】:
我已阅读此主题:What does the "__block" keyword mean?,其中讨论了 __block 的用途,但我对其中一个答案感到困惑。它说__block 用于避免保留循环,但它下面的 cmets 让我不确定。
我使用它是这样的:
self.someProperty = x; //where x is some object (id)
__block __weak VP_User *this = self;
//begin a callback-style block
this.someProperty = nil;
我需要同时使用__block 和__weak 吗?这种方式看起来有什么明显的问题吗?
【问题讨论】:
-
不,它可能说“
__weak用于避免保留周期”。 -
实际上其中一个答案(赞成,但未接受)说“
__block有时用于避免保留周期” -
我不明白;使用
__weak是避免这种情况的方法。 -
我也不是 - 因此这个线程要求澄清。可以同时使用吗?
-
也许混淆源于在手动引用计数中,__block说明符确实导致对象not被保留,因此可以避免一个保留周期。这种行为在 ARC 中有所不同(在“过渡到 ARC 发行说明”中的某处进行了记录)。
标签: objective-c objective-c-blocks weak-references