Unterschied NSArray und NSMutable Array

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Unterschied NSArray und NSMutable Array

    Hallo Miteinander,

    es geht um das Verständnis wie ein NSArray arbeitet. Angenommen ich habe ein NSArray mit 4 Werten vom Typ Ganzzahl angelegt und initialisiert.
    Bsp. 1, 2, 3 und 4. Sind diese Werte dann konstant oder kann ich sie im Verlauf des Programms noch ändern?

    Geht dies nur mit einem NSMutableArray?

    Gruß und Danke,
    myiosday
  • Nomen est omen.

    NSArray = Array.
    NSMutableArray = veränderbares Array.

    (Es ist natürlich möglich, über Umwege die Zeiger zu verbiegen. Ganzzahlen dürften NSNumber sein. Wenn Du es schaffst, den Inhalt von NSNumber zu verändern, ändert sich natürlich auch der Wert im Array.)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Die Veränderbarkeit eines Array, also eines MutableArray, steht in keinem Zusammenhang mit der Veränderbarkeit der einzelnen Objekte in dem jeweiligen Array.

    Wenn Du in einem MutableArray nur immutable Objekte hast, dann kannst Du zwar den Inhalt des Array aber nicht die einzelnen Objekte in dem Array ändern.

    Andererseits kannst Du in einem (immutable) Array zwar nicht den Inhalt des Array, aber evtl. die einzelnen Objekte in dem Array ändern.
  • Ein NSInteger wirst Du nicht direkt in ein NSArray bekommen, da dies kein Objekt ist. Da müsstet Du schon, wie Marco bereits angemerkt hat, auf NSNumber zurückgreifen. Allerdings sind NSNumber Objekte immutable und lassen sich nicht verändern.

    In diesem Fall musst Du daher ein NSMutableArray verwenden und immer das komplette Objekt auf dem Index tauschen, wenn Du den Wert von einem NSNumber Objekt ändern möchtest.

    Alternativ kannst Du auch eine eigene Klasse mit einem NSInteger Property erstellen. Bei den Objekten dieser Klasse kannst Du dann das Property belieben setzen und verändern. ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von MCDan ()