UI控制項為什麼要用weak

2021-07-11 17:05:54 字數 697 閱讀 1504

首先糾正一下標題, 不應該叫ui控制項, 而是通過xib直接拖拽的ui控制項(

@property(weak, nonatomic) iboutlet

uibutton

*testbtn;

). 對於新學習的同學可能不太容易理解week屬性, 誤以為, week是為了解決迴圈引用的而使用的, 而事實上, 通過xib拖拽的控制項屬性, 系統自動使用week修飾, 不是為了解決迴圈引用問題的. 這個應該很好理解, 首選分析什麼是迴圈引用, 迴圈引用通俗的講就是你中有我,我中有你, 然而, 對於ui控制項來說, 只是容器的view擁有了被拖拽進來的view, 並沒有反向的擁有關係, 因此這裡構不成迴圈引用, 那麼此處的week必然不是解決迴圈引用用的, 具體是幹什麼的呢, 我們可以看一下下圖進行分析:

如圖, 因為view中有乙個強引用的subviews陣列,通過xib拖拽過來的檢視缺省會被加入到subviews陣列中, 這時候, 當前view相當於間接地強用用這檢視, 所如果屬性的修飾符還用strong的話相當於多次強引用, 當然多次引用並不會因為程式問題, 但是對於程式設計者來說這種重複引用是不應該的, 就像一輛自行車, 如果你明知道鎖乙個鎖就能防止被偷的話, 那作為正常人都會選擇鎖一把鎖, 而有些不正常的人才會鎖兩把鎖, 當然多一把鎖也不會有太大的問題!

xib上的控制項屬性為什麼要使用weak

常規中,從xib拖出乙個控制項時,系統會自動生成一段 如下 從這個中,可以看到控制項的屬性都是用的weak,這是為什麼呢?首先,如果把weak修改成strong其實也是可以的,但是會出現乙個問題,如果把這個控制項 removefromsuperview後,控制項雖然看不見了,但是系統還是會有這個控制...

為什麼要用 enable shared from

樓主 hma if you think you can,you can.panrainbow 憂鬱淡藍 於 tue nov 9 11 48 38 2010 提到 引入enable shared from this的原因是可以實現返回值為指向該類本身的 shared ptr,為什麼以this為拷貝構造...

為什麼要用補碼

在探求為何機器要使用補碼之前,讓我們先了解原碼,反碼和補碼的概念.對於乙個數,計算機要使用一定的編碼方式進行儲存.原碼,反碼,補碼是機器儲存乙個具體數字的編碼方式.原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 1 原 0000 0001 1 原 1000 ...