2009-08-28 3 views

ответ

113

NSMutableArray (и все другие классы с Mutable на имя) могут быть изменены. Итак, если вы создаете простой NSArray, вы не сможете изменить его содержимое позже (без его воссоздания). Но если вы создадите NSMutableArray, вы можете его изменить - вы заметите, что у него есть методы, такие как -addObject: и -insertObject:atIndex:.

Для получения более подробной информации см. the documentation.

4

«Изменчивые» типы - это классы, которые могут быть изменены после их инициализации, например NSMutableString против 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

Shaggy: Вы не можете изменить * экземпляр * класса NSString. Это не проблема. Проблема в том, что «' NSString * '" не обязательно указывает на экземпляр класса NSString. Он также может указывать на экземпляры классов, полученных из 'NSString', например' NSMutableString'. Поэтому вы не можете полагаться на 'NSString * ', который вы получили из внешнего мира, чтобы быть неизменяемым. –

0

NSArray: в NSArray мы не можем изменить индекс .... Средства исправить массив.

NSMutableArray: в NSMutableArray мы можем изменить индекс, а также добавить значение в массиве во время выполнения ..

Смежные вопросы