iOS XCode的weak 引用細節

2021-07-28 18:58:25 字數 649 閱讀 4270

在ios很多時候在類中建立乙個關聯的物件都使用到了@property(weak)iboutlet uibutton* btn;為什麼要使用到了weak,其實也是可以使用strong的,

但是為什麼我們建立的時候就建議我們使用weak的呢?從內部原來展開來看,在uiview中加入了乙個新的ui元素,呼叫了addsubview已經對該元素進行了strong引用,

而此時如果也使用strong引用其實也是可以的,但是沒有必要,所以就使用了weak,如下圖:

接下來我們說說**物件為什麼要使用weak的乙個屬性,在view中加入了乙個uiscrollview,因為view在addsubview也是使用了strong引用,

同理和上面的一樣,但是接下來如果uiscrollview的delegate指向了view,如果是weak則在view釋放的時候沒有問題,但是呢如果是strong,view

->strong uiscrollview,而uiscrollview 也 strong 了view 則產生了乙個迴圈引用,如下圖:

iOS 弱引用weak的使用

oc開發過程中,我們經常會使用到弱引用和強引用 我們為什麼要使用弱引用呢?要想知道這個我們需要weak的原理。原理 runtime維護了乙個weak表,其實weak是乙個hash 雜湊 表,其中key表示指向物件的指標,value是乙個陣列,裡面儲存的weak指標的位址陣列,當我們使用 weak的時...

14 6 Swift中weak解決迴圈強引用

6 迴圈強引用 arc不是萬能的,它可以很好的解決記憶體過早釋放的問題,但是在某些場合下不能很好的解決記憶體洩漏的問題。迴圈強引用是造成記憶體洩漏的原因。接下來我們還是用 來給大家講解什麼是迴圈強引用。直接用官方例子 class person varapartment apartment?deini...

weak的實現原理

實現 weak weak 的作用 weak關鍵字的作用弱引用,所引用物件的計數器不會加一,並在引用物件被釋放的時候自動被設定為nil。如何實現 weak 整個系統中存在很多個物件,這些物件都可能會被弱引用,那麼我們需要乙個容器來容納這些被弱引用的物件,比如陣列,在此將這個容器的資料結構標識為obje...