I have the following code inside a method:
UIImageView* imageBlk = self.image;
self.finishBlock = ^{
imageBlk.hidden = YES;
}
Under ARC, will self get retained by the block because image is a property of self? Who owns imageBlk? Self?
I have the following code inside a method:
UIImageView* imageBlk = self.image;
self.finishBlock = ^{
imageBlk.hidden = YES;
}
Under ARC, will self get retained by the block because image is a property of self? Who owns imageBlk? Self?
会self
被块保留吗?不,它不会。该imageBlk
变量不是实例变量,因此块不需要保留self
。在您发布的代码中无需担心保留周期。
谁拥有imageBlk
? imageBlk
是堆栈变量。该块将保留变量。ARC 负责这种保留,并在适当的时候适当地释放它。
谁拥有self
?我们无法从这段代码中回答这个问题。曾经分配过该对象的人将拥有它。曾经保留它的人也拥有它。
不,asimageBlk
不一样self.image
!imageBlk
是一个局部变量,不属于任何人。imageBlk
块内部是一个只读副本,imageBlk
而不是同一个变量。如果你希望它是同一个变量,你必须使用__block
声明。
代码很好。在块外声明的变量是只读的,你不能改变它的值。
但是......你不会改变价值!您只需在值上“调用一个方法”,即 [imgBlock setHideen:YES];
完全合法。一切都将完美无缺。Block 将根据需要保留 imgView。