objective-c - block内存管理的问题

浏览:60日期:2023-12-14

问题描述

[UIView animateWithDuration:0.2 animations:^{ self.movingView.transform = CGAffineTransformMakeTranslation(200, 0);}];

非常常用的一个动画block.

那么,在动画 block 中使用了成员变量,会导致 retain cycle 吗?

问题解答

回答1:

所谓“引用循环”是指双向的强引用,所以那些“单向的强引用”(block 强引用 self )没有问题

建议看以下链接,第39题,说的非常详细《招聘一个靠谱的iOS》面试题参考答案

回答2:

如果是arc不会

回答3:

如果是arc,那就会产这个问题~mrc不会。

因为你用的成员变量对编译器来说是这样子的:self->member。所以在arc模式下,虽然只是用了成员变量,其实也有self指向这个变量,仍然有内存泄露的问题。

相关文章: