iOS迴圈引用

2022-03-26 07:16:36 字數 1046 閱讀 3675

class viewcontroller: uiviewcontroller 

}// 迴圈引用的方法

func cycliclead(completionback:@escaping ()->()) -> void }}

// 當物件銷毀時會呼叫

deinit

}

oc方式

__weak typeof(self) weakself = self;

self.block = ^(nsstring *name);

__unsafe_unretained typeof (self) weakself = self;

[self loaddata:^];

swift方式

// 解決方案一:

/*細節1:var ,weak 只能修飾var,不能修飾 let

'weak' must be a mutable variable,

because it may change at runtime

weak 可能會被在執行時被修改 -> 指向的物件一旦被釋放,會被自動設定為nil

細節2: weakself? weakself! 兩種解包方式

?可選解包 - 如果self已經被釋放,不會向物件傳送getter訊息

可選解包只是單純的傳送訊息,沒有計算

! 強行解包 - 如果self已經被釋放,強行解包會導致崩潰

強行解包可以參與計算,可選項不能直接參與到計算

*/weak var weakself = self

cycliclead

cycliclead 

// 縮減寫法

cycliclead

cycliclead 

// 縮減寫法

cycliclead

iOS 看穿迴圈引用

我們在寫程式的時候 閉包能夠使 更加的簡潔 相信大家都用過mjrefresh吧 下拉重新整理 666 configuretableview tableview configuretableview alloc initwithframe cgrectzero style uitableviewsty...

iOS開發 迴圈引用

表示弱引用。表示強引用。迴圈引用可以簡單理解為物件a引用了物件b,而物件b又引用了物件a a b a,此時雙方都同時保持對方的乙個引用,導致任何時候雙方的引用計數都不為0,雙方始終無法釋放就造成記憶體洩漏。當然不只是兩個物件之間相互引用會形成迴圈引用,多個物件之間相互引用最終形成環同樣會形成迴圈引用...

iOS迴圈引用問題

今天面試問道了迴圈引用,所以就看了看,原來只是知道使用了block容易造成迴圈引用。今天就來簡單的介紹一些迴圈引用。先來簡單介紹一下什麼是迴圈引用?迴圈引用可以簡單的理解成 a物件引用了b物件,b物件又引用了a物件。兩者相互保持對方的乙個引用。導致任何時候計數都不為0,最終兩者都無法釋放。產生迴圈引...