您的当前位置:首页注意weak属性的坑

注意weak属性的坑

2024-12-13 来源:哗拓教育

在 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次,所以就算临时变量过了函数作用域,视图也会被一直持有的。

显示全文