NSString為什么用copy

最近在準備面試!這個問題被問的很多!自己花了一點時間,把demo敲了一遍,順便看看問題的到底在那。話不多上代碼和圖片


開發


這邊我們用NSMutableString分別給用copy 和 strong 修飾的NSString進行賦值,答應結果告訴我們用strong修飾的string 的內存地址和NSMutableString的內存地址一樣,而用copy是開辟的一個新的空間

當我們再次修改了NSMutableString的時候我們strong修飾的值發生了變化!違背NSString的不可性。

如果你想讓strong修飾的string不會發變化的話可以參考下面的做法

strong修飾string值變


這樣通過Xcode跑出來的結果我們對NSMutableString進行一次copy操作!我們可以發現無論是用copy還是用strong 的值都沒有發生變化。而是都指向一塊新的空間。

我仔細思考后

1.這里面還有深拷貝還有淺拷貝,上面結果告訴我們copy是深拷貝,在內存中開辟了空間

2.系統對內存的分配情況。

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

推薦閱讀更多精彩內容