最近在準備面試!這個問題被問的很多!自己花了一點時間,把demo敲了一遍,順便看看問題的到底在那。話不多上代碼和圖片
開發
這邊我們用NSMutableString分別給用copy 和 strong 修飾的NSString進行賦值,答應結果告訴我們用strong修飾的string 的內存地址和NSMutableString的內存地址一樣,而用copy是開辟的一個新的空間
當我們再次修改了NSMutableString的時候我們strong修飾的值發生了變化!違背NSString的不可性。
如果你想讓strong修飾的string不會發變化的話可以參考下面的做法
strong修飾string值變
這樣通過Xcode跑出來的結果我們對NSMutableString進行一次copy操作!我們可以發現無論是用copy還是用strong 的值都沒有發生變化。而是都指向一塊新的空間。
我仔細思考后
1.這里面還有深拷貝還有淺拷貝,上面結果告訴我們copy是深拷貝,在內存中開辟了空間
2.系統對內存的分配情況。