В чем разница b/w NSArray
и NSMutableArray
?Разница между NSArray и NSMutableArray
ответ
NSMutableArray
(и все другие классы с Mutable
на имя) могут быть изменены. Итак, если вы создаете простой NSArray
, вы не сможете изменить его содержимое позже (без его воссоздания). Но если вы создадите NSMutableArray
, вы можете его изменить - вы заметите, что у него есть методы, такие как -addObject:
и -insertObject:atIndex:
.
Для получения более подробной информации см. the documentation.
«Изменчивые» типы - это классы, которые могут быть изменены после их инициализации, например NSMutableString
против NSString
.
'NSMutableString' происходит от' NSString'. Следовательно, вы не можете полагаться на «NSString *», который вы получаете извне, чтобы быть неизменяемым. Вы можете только предположить, что 'NSMutableString *' изменяет. 'NSString *' может быть изменчивым или неизменным. Вот почему вы можете захотеть вызвать '[str copy]', когда экземпляр присваивается некоторому свойству в вашем классе. –
Вы не можете изменить NSString после его создания. См. Http://stackoverflow.com/questions/905396/the-final-word-on-nsstrings-mutable-and-immutable. Что касается того, почему вы используете копию, см. Http://stackoverflow.com/questions/387959/nsstring-property-copy-or-retain –
Shaggy: Вы не можете изменить * экземпляр * класса NSString. Это не проблема. Проблема в том, что «' NSString * '" не обязательно указывает на экземпляр класса NSString. Он также может указывать на экземпляры классов, полученных из 'NSString', например' NSMutableString'. Поэтому вы не можете полагаться на 'NSString * ', который вы получили из внешнего мира, чтобы быть неизменяемым. –
NSArray: в NSArray мы не можем изменить индекс .... Средства исправить массив.
NSMutableArray: в NSMutableArray мы можем изменить индекс, а также добавить значение в массиве во время выполнения ..
Будьте вежливы ... мы все должны начать где-нибудь, и документы могут быть очень загадочным для новичка , – kmiklas