iOS開發之代理屬性用weak和assign修飾的區別

strong:該對象強引用delegate,外界不能銷毀delegate對象,會導致循環引用(Retain Cycles)

weak:指明該對象并不負責保持delegate這個對象,delegate的銷毀由外部控制。當delegate指向的對象銷毀后,自動delegate = nil。

assign:具有weak的效果,但需要手動設置nil。

為什么用weak不用assign?
assign是指針賦值,不操作引用計數,delegate用完后如果沒有設置為nil,有可能產生野指針;
而weak指向的delegate一旦用完,自動就nil了,不會產生野指針。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容