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。