2009-08-28 44 views

回答

113

NSMutableArray(以及名稱中包含Mutable的所有其他類)都可以修改。因此,如果您創建一個普通的NSArray,則以後無法更改其內容(無需重新創建它)。但是如果你創建了NSMutableArray,你可以改變它 - 你會注意到它有方法-addObject:-insertObject:atIndex:。詳情請參閱the documentation

4

「可變」類型是可在初始化後更改的類,如NSMutableString vs NSString

+1

'NSMutableString'源自'NSString'。因此,你不能依靠從外部接收的「NSString *」來保持不變。你只能假設'NSMutableString *'是可變的。 'NSString *'可以是可變的或不可變的。這就是爲什麼當實例被分配給類中的某個屬性時,您可能需要調用'[str copy]'。 –

+0

構建完成後,您無法更改NSString。見http://stackoverflow.com/questions/905396/the-final-word-on-nsstrings-mutable-and-immutable。至於你爲什麼使用副本,請參閱http://stackoverflow.com/questions/387959/nsstring-property-copy-or-retain –

+1

毛茸茸的:你不能改變'NSString'類的*實例*。這不是問題。問題是「'NSString *'」不一定指向'NSString'類的實例。它也可以指向從'NSString'派生的類的實例,如'NSMutableString'。因此,你不能依靠你從外部接收到的'NSString *'是不可變的。 –

0

NSArray:在NSArray中,我們無法更改索引.... 意味着修復數組。

的NSMutableArray:在NSMutableArray裏,我們可以改變指數,也是在運行時數組添加值..