So wird ein NSMutableArray ordnungsgemäß geleert

8

Ich versuche, ein NSMutableArray mit dem [myarray removeallobjects] zu leeren; aber ich bekomme Fehler exc_bad_access. Ist das der richtige Weg, um das Array zu leeren? Ich habe versucht, es auf Null zu setzen, aber es funktioniert auch nicht. Eigentlich fülle ich das Array mit Daten und der Benutzer hat die Möglichkeit, die Daten zu "erneuern" und ich möchte das Array leeren, bevor ich die aktualisierten Daten eintrage. Ich kann keinen Code posten, weil er zu groß ist.

    
BlackM 19.06.2011, 00:46
quelle

3 Antworten

57

-[NSMutableArray removeAllObjects] ist die korrekte Art, eine NSMutableArray zu leeren. Wahrscheinlich stürztst du ab, weil du immer noch die Objekte verwendest, die du irgendwo entfernt hast, vielleicht in deiner UI.

    
puzzle 19.06.2011, 00:49
quelle
1

Ich denke, das Problem liegt in diesem Codeschnipsel, den Sie in den Kommentaren angegeben haben,

%Vor%

taggedID und taggedName sind Eigenschaften des Objekts checkinsA . Sie sollten nur in der Methode dealloc veröffentlicht werden. Das Array behält die Objektbaumstruktur nicht bei. Es behält nur das Wurzelobjekt bei. Also sollte es hier keine Veröffentlichung geben. Also klopfen Sie die zwei Linien in der Mitte aus und machen Sie es

%Vor%     
Deepak Danduprolu 19.06.2011 08:47
quelle
0

Sie stürzen ab, weil Ihr Array nicht mehr im Speicher vorhanden ist.

Ich wette, es liegt daran, dass du vergessen hast, es zu behalten (oder es zu früh zu veröffentlichen)

Sie haben es wahrscheinlich mit [NSMutableArray array] oder arrayWithObjects: oder einigen dieser Varianten erstellt oder nach Ihrem autorelease + alloc init aufgerufen, während es sich bei einer Instanzvariable um das Objekt handelt ist dealloc'd.

Beachten Sie, dass Speicherverwaltung ein wichtiger Teil der iOS-Entwicklung ist. Seien Sie sicher, es vollkommen zu kennen (wie es natürlich wird und Sie nicht zögern werden, zu behalten und wann zu entlassen), bevor Sie fortfahren, es wird Ihnen viele Schwierigkeiten wie dieses vermeiden, sobald Sie es richtig verwenden.

    
AliSoftware 19.06.2011 02:28
quelle

Tags und Links