在 ARC 模式下,我們申明一個(gè)weak屬性:
@property (weak, nonatomic) UIView *testView;
然后創(chuàng)建并添加視圖:
_testView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[self.view addSubview:_testView];
如果工程較小的話(huà),比如我寫(xiě)的demo洞翩,會(huì)給警告:
屏幕快照 2017-07-11 上午10.50.03.png
但如果你的項(xiàng)目很大检号,可能不會(huì)出現(xiàn)警告打掘,這就坑了。你在debug模式下君编,這個(gè)視圖是正常的,但如果切到release模式下川慌,這個(gè)視圖可能就不顯示了吃嘿!
解決方法:
1、將weak改成strong梦重;
2兑燥、先申明一個(gè)臨時(shí)變量,如下:
UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
[self.view addSubview:tempView];
_testView = tempView;
方法二其實(shí)是先用臨時(shí)變量強(qiáng)持有新分配的View內(nèi)存琴拧,然后addSubview會(huì)再?gòu)?qiáng)持有1次降瞳,所以就算臨時(shí)變量過(guò)了函數(shù)作用域,視圖也會(huì)被一直持有的蚓胸。