我很抱歉,这个问题可能相当基础,但我认为它与很多进入块编程的Objective-C程序员相关。
我听说由于块捕获其中引用的本地变量作为const
副本,因此在块内使用self
可能会导致循环引用,如果该块被复制。因此,我们应该使用__block
来强制块直接处理self
,而不是将其复制。
__block typeof(self) bself = self;
[someObject messageWithBlock:^{ [bself doSomething]; }];
不仅仅是
[someObject messageWithBlock:^{ [self doSomething]; }];
我想知道的是:如果这是真的,除了使用GC之外,是否有办法避免这种丑陋的情况?
self
代理称为this
,这样可以颠倒一下。在JavaScript中,我把我的this
闭包称为self
,这样感觉更加平衡。 :) - devios1