Erstellen Sie ein Array von Arrays, die in XCode

Ich versuche zu bauen, ein array mit arrays von dictionary-Objekten in Xcode. Ich kann ein working-array, das ein oder mehrere Wörterbücher, in es und verwenden Sie dann die addObject: Methode zum hinzufügen dieses array als ein Objekt in meinem Haupt-array. Ich Zyklus um dies mehrere Male, den Wiederaufbau der array arbeiten und hinzufügen von Objekten auf der Haupt-array. Alles gut so weit, außer, dass bei der Sichtung meiner Haupt-array, es enthält Abschriften der letzten Wörterbüchern, die die Arbeits-array aufgebaut ist. Ich gehe davon aus dies ist weil wenn ich mit der addObject-es weist einfach einen Zeiger auf das array aber nicht erhöht den retain-count oder erstellen Sie eine Kopie des array arbeiten, also jedes mal, wenn es wieder aufgebaut ist das Haupt-array einfach Punkte, die in diesem array.

Ich denke, meine Frage ist wie erstelle ich eine Kopie des working-array hinzufügen, um die Haupt-array und erstellen Sie dann es neu und fügen Sie es wieder? Hoffe das macht Sinn und sorry, wenn dies scheint eine grundlegende Frage: ist es (ich bin neu in Xcode) - und jede Hilfe wäre wirklich zu schätzen.


        [sectionArray release];
        sectionArray  = [[NSMutableArray alloc] init];
        [sectionArray addObject:dict];

Das alles funktioniert, das ist toll. Eine Sache, die ich don ' T haben, meinen Kopf um noch ist, besteht die Gefahr, dass, wenn ich fertig bin mit dem Haupt-array, und ich ein [mainArray release] auch, dass diese untergeordneten arrays werden zurückgelassen werden, im Speicher, oder wird der release vernichten?


Ich habe es gelöst durch re-Initialisierung die innere Funktion array statt nur entfernen Sie alle Objekte, d.h.,

Habe ich:

        [sectionArray removeAllObjects];
        [sectionArray addObject:dict];

Und es geändert:

        sectionArray  = [[NSMutableArray alloc] init];
        [sectionArray addObject:dict];

Habe ich das Gefühl, obwohl, dass dies ist nicht eine gute Sache zu tun, und ich werde beginnen zu Speicherverlust alle über dem Platz.

wenn Sie das tun addObject in einem array, ich blive array behält dieses Objekt..., so Ihre Annahme, dass das d oes nicht passieren, ist falsch
Code-Beispiel? Was du fragst ist möglich, so können Sie einen Fehler haben.
Ja, es wird. Sie müssen release/autorelease. Oder verwenden Sie die NSMutableArray +array-Methode.
Es ist in Ordnung, nur sicherstellen, dass Sie lassen Sie die alten Arrays ersten, z.B. [sectionArray Version], bevor Sie die oben genannten zwei Zeilen. Wenn Sie angerufen addObject der retain-count auf das zugrunde liegende Objekt wird erhöht, so dass die Veröffentlichung sectionArray nicht frei das eigentliche array. Dann lassen Sie das array von Zeigern wird es kostenlos allen arrays verwiesen wird, die von diesen Zeigern.
Das ist großartig, danke Jungs. Bin wirklich peinlich zu Fragen, wie Grundlagen-und das ist wirklich hilfreich.

InformationsquelleAutor Dave Hill | 2009-11-19

Schreibe einen Kommentar