公司的代碼,聲明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