delegate weak與assign

公司的代碼,聲明delegate時都用的assign,與本身一慣使用的weak不一樣,故查了一下區別,隨筆指針

weak:該對象不負責持有delegate,delegate的銷燬由外部控制(指向一個對象,但不擁有該對象)對象

strong:該對象強引用delegate,外界不能銷燬delegate對象,會致使循環引用.循環

assign:指針賦值,不增長引用計數,可是使用以後若是沒有置爲nil,可能就會產生野指針.引用

assign主要是在MRC中使用的,weak是ARC下出現的,weak比assign多了一個功能:當對象釋放時自動把指針變成nil

使用assign的狀況下:delegate指向的對象若是銷燬了,delegate中保存的地址依然是以前的地址,也就是說delegate成爲了一個野指針

使用weak的狀況下:delegate指向的對象若是銷燬了,delegate會被置爲nil,不會出現問題,因此應該用weak

相關文章
相關標籤/搜索