天天看點

ARC中的weak和strong

①一般對象用strong ②UI控件用weak,和strong都可以,weak更高性能 ③delegate用weak 在ARC環境下,當一個對象沒有被strong( 強指針 )指向的時候就會被回收記憶體,而且所有指針預設是 strong。__weak 可以設定為弱指針

為什麼代理用weak? 實線為strong指針,虛線為weak指針

情景一 (代理為strong),當window的rootViewController發生替換(rootViewController設定為另外一個viewController),下圖中紅色的強指針消失,但是UIViewController還是被UIScrollView的delegate強指針指着,是以不會被自動回收記憶體,發生記憶體洩露

情景一 (代理為weak),當window的rootViewController發生替換(rootViewController設定為另外一個viewController),下圖中紅色的強指針消失,UIViewController沒有被強指針指着,會自動回收記憶體。