Ios 在从块运行的方法中对self的强引用
因此,我知道如果您在Ios 在从块运行的方法中对self的强引用,ios,objective-c,objective-c-blocks,Ios,Objective C,Objective C Blocks,因此,我知道如果您在self中保存一个块,然后访问该块中的self,您需要创建并使用类似\uu弱id weakSelf=self 我的问题是,这是否也扩展到从该块调用的函数?如中所示,以下情况是否会导致保留周期: self.block = ^{ [weakSelf myFunction]; } - (void) myFunction { self.counter++; } 谢谢你的时间 这不会创建保留循环,因为方法中的self实际上是由Objective C运行时传递的参数(使用和类似)。因此
self
中保存一个块,然后访问该块中的self
,您需要创建并使用类似\uu弱id weakSelf=self代码>
我的问题是,这是否也扩展到从该块调用的函数?如中所示,以下情况是否会导致保留周期:
self.block = ^{ [weakSelf myFunction]; }
- (void) myFunction { self.counter++; }
谢谢你的时间 这不会创建保留循环,因为方法中的self
实际上是由Objective C运行时传递的参数(使用和类似)。因此,让我们考虑在代码示例中可能出现的两种情况。code>weakSelf
由于释放保留对象而被归零-传递给nil
的消息被忽略weakSelf
未归零,在这种情况下,它由Objective C运行时作为其self
参数传递给消息。否。它只保留块体本身中引用的对象。@gearheadalex干杯,快乐编码!