当使用self访问时,成员变量是否被块保留

时间:2014-11-03 09:30:19

标签: objective-c-blocks

我知道如果在一个块中引用self,则self会被一个块保留。但如果我这样做:

的NSLog(@ “%@”,self.memberVariable);

块还会保留memberVariable吗?或只有自己被这个街区保留?

先谢谢。

2 个答案:

答案 0 :(得分:1)

成员变量也保留。根据块编程指南,

  

在引用计数环境中,默认情况下引用时   一个块内的Objective-C对象,它被保留。这甚至是真的   如果您只是引用对象的实例变量。宾语   但是,使用__block存储类型修饰符标记的变量是   不保留。

答案 1 :(得分:0)

唯一的"变量"你是"访问"是self。只阻止"捕获"局部变量(self被认为是局部变量),因为它们是生命周期与范围相关的唯一变量。属性(实际上是方法调用)和实例变量总是被访问"通过一些其他对象指针,因此它们的生命周期与该对象的生命周期相关联。