2017-04-09 67 views
0

我是新的Objective-C編程。我正在閱讀約NSStingNSMutableStringNSString基本上是不可變的字符串,而NSMutableString是可變的,因爲它的名字暗示。這很好但是我想知道除了可變和不可變之外,爲什麼NSString還不推薦使用,如果我可以使用NSMutableString執行NSString的所有操作。任何人都可以向我清楚?爲什麼NSString仍然存在,如果我可以做任何事情與NSMutableString?

+0

我相信你的問題已經回答檢查[this](http://stackoverflow.com/questions/16460779/what-is-actual-difference-between-nsstring-and-nsmutable-string-in-objective -cw)&[this](http://stackoverflow.com/questions/1749571/what-is-the-purpose-of-having-both-nsmutablestring-and-nsstring) –

+0

感謝@MahbubAhmed和@gema的迴應。這真的很有幫助。所以請讓我改正,基本上我明白'NSString'的性能(從編譯器的角度來看,它消除了額外的值檢查和開銷條件)和內存方面的'NSString'總是在新分配值上創建新的存儲器[link]( http://stackoverflow.com/questions/1749571/what-is-the-purpose-of-having-both-nsmutablestring-and-nsstring)。 –

回答

0

這是關於內存開銷情況下的性能。來自Apple site

性能也是對象的不可變版本(例如字符串和字典)的一個原因。基本實體(如字符串和字典)的可變對象爲它們帶來了一些開銷。因爲它們必須動態地管理一個可變的後臺存儲 - 根據需要分配和釋放內存塊,所以可變對象的效率可能比不可變對象的效率要低。

所以在我看來,NSString的不可變版本很重要。我們總是需要記住我們的代碼性能和效率。

相關問題