天天看點

個人整理weak、assign、strong、copy、retain的差別

首先說說iOS中的

assign:我的了解是在普通資料類型中使用(非object-c),可以直接給屬性進行指派而不會開辟多餘的指針。

retain:對指針操作,位址之間的指派,位址改變,屬性的值不改變,retainCount會加一。

copy:在堆中開辟新的記憶體,用于存儲舊的屬性,新的屬性與舊的屬性無互相影響,retainCount為一,與舊的retainCount無影響。

strong:強引用,隻要使用這個修飾的屬性,一旦開辟空間,隻要沒有任何屬性指向他或者屬性置為nil時才會釋放,retainCount會加一。

weak:這是iOS5.0的屬性,跟strong很相似,當沒有任何指針指向它時,會自動釋放記憶體或把其他指向的指針值置為nil,retainCount不變,可以有效防止野指針的情況。