【发布时间】:2015-09-08 23:29:01
【问题描述】:
这样做安全吗?
__weak typeof (self) welf = self;
dispatch_async(dispatch_get_main_queue(), ^{
[welf doStuff];
})
....
-(void)doStuff {
[_member1 someMethod];
....
[_member2 someMethodWithParam:_someCArray[1];];
}
据我了解 ARC,对 [welf doStuff] 的实际调用应该没问题,因为 welf 要么有效(并且方法调用将继续),要么它将是 nil - 调用任何方法nil 在 Objective-C 中被定义为安全行为,所以看起来没问题。
然而,一旦我们进入doStuff,ARC 是否会导致在方法调用期间保留self?如果是这样,我认为我们应该没问题...如果不是,那么 self 可能会在方法调用的中途得到 dealloc'ed,然后我们就会处于不利的境地。
注意:我搜索了这个,但找不到任何明显的东西。也许只是很难搜索?
谢谢!
【问题讨论】:
-
这个问题已经有豆回答stackoverflow.com/q/19018456/978568
-
@YuriiKolesnykov 我不明白这些问题是如何回答这个问题的。
-
这不是另一个问题的重复。另一个问题侧重于保留周期。
标签: objective-c automatic-ref-counting