ios 中copy和strong使用之我見

copy和strong一般情況是不可變類型用copy,可變類型用strong,但是根據個人需要而異。

首先,屬性使用copy的時候,特殊的字符串賦值的時候是指針指向,共用同一塊內存。

然而NSArray,NSDictionary,NSSet這些容器類的賦值時,分兩種情況,copy的時候相當于值拷貝,而strong相當于指針指向同一塊內存。故copy的NSArray不會跟著賦值的NSMutableArray值改變而變化,strong的NSArray由于與NSMutableArray公用同一塊內存而跟著改變。

下面圖片為證。

容器類的不可變類型使用strong,打印表明值和指針相同
容器類的不可變類型使用copy,打印表明值和指針都不相同

特殊的字符串。

不可變的具有相同的指針地址,某個字符串變化只有他自己指向新的地址

不可變的具有相同的指針地址,某個字符串變化只有他自己指向新的地址


可變字符串使用copy的是新地址,但是值沒有變。

可變字符串發(fā)生變化其他的不會變化

僅供參數,錯誤之處請指正,有個疑問為什么用weak修飾的字符串和strong一樣。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容