美文网首页
注意weak属性的坑

注意weak属性的坑

作者: LeLeBa | 来源:发表于2017-07-11 10:54 被阅读9次

在 ARC 模式下,我们申明一个weak属性:

@property (weak, nonatomic) UIView *testView;

然后创建并添加视图:

_testView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[self.view addSubview:_testView];

如果工程较小的话,比如我写的demo,会给警告:

屏幕快照 2017-07-11 上午10.50.03.png

但如果你的项目很大,可能不会出现警告,这就坑了。你在debug模式下,这个视图是正常的,但如果切到release模式下,这个视图可能就不显示了!

解决方法:

1、将weak改成strong;
2、先申明一个临时变量,如下:

UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[self.view addSubview:tempView];
_testView = tempView;

方法二其实是先用临时变量强持有新分配的View内存,然后addSubview会再强持有1次,所以就算临时变量过了函数作用域,视图也会被一直持有的。

相关文章

网友评论

      本文标题:注意weak属性的坑

      本文链接:https://www.haomeiwen.com/subject/ftiphxtx.html