使用在块中访问self的方法是否安全

时间:2014-08-28 07:06:23

标签: ios objective-c objective-c-blocks

给出方法

-(void) doSomeWork
{
  self.abc = ...
  self.doreme=...
}

在块内使用doSomeWork是否安全?如

[weakSelf doSomeWork];//this is inside a block

当然,我关注的是doSomeWork本身对自我有一些参考。

1 个答案:

答案 0 :(得分:2)

是的,在doSomeWork的块中使用weakSelf是完全安全的。

  

当然,我关注的是doSomeWork本身对self有一些参考。

更好的方法是“doSomeWork本身使用self”,以便从句子中删除“引用”一词。在self内创建doSomeWork没有“引用”:该方法因为是类的实例方法而免费引用self。调用者将实际引用传递给方法;当方法执行时,它被称为self,但是没有创建新对象。换句话说,当您拨打[weakSelf doSomeWork]时,weakSelf会在self内变为doSomeWork,持续时间为方法调用。