Entfernt removeObject das Objekt in einem NSMutableArray von Objekten?

7

Ich habe mich gefragt, wann Sie ein Objekt mit removeObject in einem Array entfernen, wenn dieses entfernte Objekt richtig behandelt wird. Würde das entfernte Objekt freigegeben werden?

    
Frank 03.11.2009, 17:10
quelle

4 Antworten

14

Das NSMutableArray wird es freigeben. Wenn das die letzte beibehalten wird, wird es freigegeben. Aus der Dokumentation:

  

Wie NSArray pflegen Instanzen von NSMutableArray starke Verweise auf ihren Inhalt. Wenn Sie keine Speicherbereinigung verwenden [ Jed: das iPhone nicht]] erhält das Objekt eine Retain-Nachricht, wenn Sie einem Array ein Objekt hinzufügen. Wenn ein Objekt aus einem veränderbaren Array entfernt wird, erhält es eine Freigabemeldung. Wenn es keine weiteren Verweise auf das Objekt gibt, bedeutet dies, dass das Objekt freigegeben wird. Wenn Ihr Programm einen Verweis auf ein solches Objekt behält, wird die Referenz ungültig, es sei denn, Sie senden dem Objekt eine Retain-Nachricht, bevor es aus dem Array entfernt wird.

Weitere Informationen finden Sie in der NSMutableArray-Dokumentation . Ihr Beispiel bezieht sich tatsächlich auf removeObjectAtIndex: :

%Vor%     
Jed Smith 03.11.2009, 17:13
quelle
5

Ja. Sammlungen behalten Werte bei, die sie sammeln, wenn die Werte zur Sammlung hinzugefügt werden. Dies bedeutet, dass die Werte freigegeben werden, wenn sie aus der Sammlung entfernt werden.

    
Dave DeLong 03.11.2009 17:13
quelle
3

Ja, wenn das Objekt aus dem NSMutableArray entfernt wird, wird es freigegeben. Wenn die Retain-Anzahl 0 ist, wird die Zuordnung aufgehoben (oder die Garbage-Collection wird aufgehoben, wenn Sie stattdessen auf OS X mit aktiviertem GC ausgeführt wurden).

    
Steve Madsen 03.11.2009 17:12
quelle
0

Wie alle gesagt haben, wird das Objekt eines NSMutableArray freigegeben, nachdem es aus dem Array entfernt wurde.

Wenn Sie das Objekt nicht freigeben möchten, behalten Sie es vor dem Aufruf der Methode remove object bei. In diesem Fall sind Sie dafür verantwortlich, dass es später veröffentlicht wird:

%Vor%     
Luis Andrés García 07.02.2012 13:42
quelle

Tags und Links