注意weak屬性的坑

在 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次,所以就算臨時變量過了函數作用域,視圖也會被一直持有的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 面試題參考1 : 面試題[http://www.cocoachina.com/ios/20150803/12872...
    江河_ios閱讀 1,758評論 0 4
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,211評論 30 472
  • 重點掌握 3 類對象和方法 對象就是一個物體 類的獨特存在就是一個實例,對實例進行操作叫做方法。方法可以應用于類或...
    Coder大雄閱讀 1,282評論 0 2
  • 把網上的一些結合自己面試時遇到的面試題總結了一下,以后有新的還會再加進來。 1. OC 的理解與特性 OC 作為一...
    AlaricMurray閱讀 2,610評論 0 20
  • 01 你設定的標準決定了你的人生。 這句話第一次是從永澄老師那兒聽來的,在我的潛意識里默默的沉淀著。最近在寫文章的...
    繁華靜語閱讀 435評論 0 1