bgo*_*son 2 ios objective-c-blocks ios5 automatic-ref-counting
我已成为一个有块的偏执狂和创建保留周期的可能性.我正在使用UIAlertView该类的基于块的版本,它允许您使用块而不是委托方法.我使用了很多这些Alertviews,所以我经常调用实例方法,这些方法做了很多繁重的工作.
我在方法中进行的分配是否someInstanceMethod会导致保留周期?
(我使用ARC进行内存管理.)
__weak id weakSelf = self;
[doWorkAndThen:^{
[weakSelf someInstanceMethod];
}];
-(void) someInstanceMethod{
//will either of the assignments below cause a retain cycle?
self.iVar = @"data";
[self setIvar:@"data";
}
Run Code Online (Sandbox Code Playgroud)
号-someInstanceMethod不是块.你从一个人那里调用它的事实是无关紧要的.只有块内部的引用本身才能导致保留,并且因为块中的唯一引用是__weak变量,所以你没问题.
顺便说一下,如果你真的想要放松一下,你应该修改你的基于块的UIAlertView类,以便在视图被解除时丢弃所有块.这样,即使您创建了保留周期,一旦警报视图消失,它将自动中断.
| 归档时间: |
|
| 查看次数: |
649 次 |
| 最近记录: |