2009-08-28 18 views

Antwort

113

NSMutableArray (und alle anderen Klassen mit Mutable im Namen) kann geändert werden. Wenn Sie also eine einfache NSArray erstellen, können Sie deren Inhalt später nicht ändern (ohne sie neu zu erstellen). Aber wenn Sie ein NSMutableArray erstellen, können Sie es ändern - Sie werden feststellen, dass es Methoden wie -addObject: und -insertObject:atIndex: hat.

Weitere Informationen finden Sie unter the documentation.

4

Die "veränderbaren" Typen sind Klassen, die nach der Initialisierung geändert werden können, z. B. NSMutableString vs NSString.

+1

'NSMutableString' wird von' NSString' abgeleitet. Folglich können Sie sich nicht darauf verlassen, dass ein "NSString *", den Sie von außen erhalten, unveränderlich ist. Sie können nur annehmen, dass "NSMutableString *" änderbar ist. 'NSString *' kann veränderbar oder unveränderlich sein. Aus diesem Grund sollten Sie '[str copy]' aufrufen, wenn die Instanz einer Eigenschaft in Ihrer Klasse zugewiesen ist. –

+0

Sie können einen NSString nicht ändern, nachdem er erstellt wurde. Siehe http://stackoverflow.com/questions/905396/the-final-word-on-nsstrings-mutable-and-immutable. Warum Sie kopieren verwenden, siehe http://StackOverflow.com/Questions/387959/NSString-Property-Copy-or-Retain –

+1

Shaggy: Sie können eine * Instanz * der 'NSString' Klasse nicht ändern. Das ist nicht das Problem. Das Problem ist, dass ein "NSString *' "nicht unbedingt auf eine Instanz der' NSString' Klasse verweist. Es kann auch auf Instanzen von Klassen verweisen, die von 'NSString' abgeleitet sind, wie' NSMutableString'. Daher können Sie sich nicht darauf verlassen, dass ein 'NSString *', den Sie von der Außenwelt erhalten haben, unveränderlich ist. –

0

NSArray: in NSArray können wir Index nicht ändern .... Bedeutet fix Array.

NSMutableArray: in NSMutableArray können wir Index ändern und auch den Wert in einem Array zur Laufzeit hinzufügen ..

Verwandte Themen