最近在準(zhǔn)備面試!這個(gè)問題被問的很多侧但!自己花了一點(diǎn)時(shí)間矢空,把demo敲了一遍,順便看看問題的到底在那禀横。話不多上代碼和圖片
這邊我們用NSMutableString分別給用copy 和 strong 修飾的NSString進(jìn)行賦值屁药,答應(yīng)結(jié)果告訴我們用strong修飾的string 的內(nèi)存地址和NSMutableString的內(nèi)存地址一樣,而用copy是開辟的一個(gè)新的空間
當(dāng)我們?cè)俅涡薷牧薔SMutableString的時(shí)候我們strong修飾的值發(fā)生了變化柏锄!違背NSString的不可性酿箭。
如果你想讓strong修飾的string不會(huì)發(fā)變化的話可以參考下面的做法
這樣通過(guò)Xcode跑出來(lái)的結(jié)果我們對(duì)NSMutableString進(jìn)行一次copy操作!我們可以發(fā)現(xiàn)無(wú)論是用copy還是用strong 的值都沒有發(fā)生變化趾娃。而是都指向一塊新的空間缭嫡。
我仔細(xì)思考后
1.這里面還有深拷貝還有淺拷貝,上面結(jié)果告訴我們copy是深拷貝抬闷,在內(nèi)存中開辟了空間
2.系統(tǒng)對(duì)內(nèi)存的分配情況妇蛀。