Mi chiedevo quando si rimuove un oggetto usando removeObject in un array se quell'oggetto rimosso viene gestito correttamente. L'oggetto che viene rimosso verrà rilasciato?removeObject rilascia l'oggetto in un NSMutableArray di oggetti?
risposta
NSMutableArray lo rilascia. Se questo è l'ultimo trattenere, sarà deallocato. Dalla documentazione:
Come NSArray, le istanze di NSMutableArray mantengono forti riferimenti al loro contenuto. Se non si utilizza la garbage collection [Jed: l'iPhone non], quando si aggiunge un oggetto a un array, l'oggetto riceve un messaggio di conservazione. Quando un oggetto viene rimosso da un array mutabile, riceve un messaggio di rilascio. Se non ci sono ulteriori riferimenti all'oggetto, ciò significa che l'oggetto è deallocato. Se il tuo programma mantiene un riferimento a tale oggetto, il riferimento diventerà non valido a meno che tu non invii all'oggetto un messaggio di conservazione prima di essere rimosso dall'array.
Vedere NSMutableArray documentation. Loro esempio, infatti, si riferisce a removeObjectAtIndex:
:
id anObject = [[anArray objectAtIndex:0] retain];
[anArray removeObjectAtIndex:0];
[anObject someMessage];
Sì, quando l'oggetto viene rimosso da NSMutableArray, viene rilasciato. Se il suo numero di retain è 0, sarà deallocato (o garbage collection, se invece fossi in esecuzione su OS X con GC abilitato).
Sì. Le raccolte conservano i valori che raccolgono quando i valori vengono aggiunti alla raccolta, il che significa che i valori vengono rilasciati quando vengono rimossi dalla raccolta.
Come tutti hanno detto, l'oggetto di un NSMutableArray viene rilasciato dopo averlo estratto dalla matrice.
Se non si desidera rilasciare l'oggetto, conservarlo appena prima di chiamare il metodo remove object. In questo caso, sei responsabile per il rilascio successivo:
MyClass *objectToBeRemoved=[myArray objectAtIndex:indexPath.row];
[objectToBeRemoved retain];
[myArray removeObject:objectToBeRemoved];
- 1. Ember.js removeObject in forEach non rimuovendo tutti gli oggetti
- 2. System.Runtime.Caching non rilascia BitmapImage oggetti
- 3. fa removefromsuperview rilascia gli oggetti di scrollview?
- 4. Aggiunta di oggetti stringa a NSMutableArray?
- 5. Come rimuovere solo un'istanza di un oggetto da un NSMutableArray?
- 6. Aggiunta di oggetti a una proprietà NSMutableArray
- 7. CoreDataGeneratedAccessors - removeObject elimina l'oggetto?
- 8. Modificare una proprietà per tutti gli oggetti in un NSMutableArray
- 9. come cancellare un NSMutableArray di oggetti personalizzati senza creare perdite di memoria?
- 10. Come ordinare NSMutableArray degli oggetti data
- 11. NSMutableArray: è più veloce rimuovere tutti gli oggetti o iniziare un nuovo NSMutableArray?
- 12. Raccolta NSMutableArray e blocchi @Synchronized
- 13. Concatena un NSMutableArray alla fine di un altro NSMutableArray
- 14. Come rimuovere tutti gli oggetti da un NSMutableArray?
- 15. Raccogli gli ultimi x oggetti da un NSMutableArray
- 16. Cancella NSMutableArray per un aggiornamento
- 17. Objective-C NSMutableArray - ciclo foreach con oggetti di più classi
- 18. La ricerca attraverso NSMutableArray di oggetti con NSPredicate
- 19. Scambio di elementi in un NSMutableArray
- 20. Posso inserire diversi tipi di oggetti nello stesso NSMutableArray?
- 21. Come aggiungere un NSMutableArray a un NSMutableArray Objective-c
- 22. Osservazione del conteggio in NSMutableArray
- 23. Memorizzazione di CLLocationCoordinates2D in NSMutableArray
- 24. Come scambiare valori in NSMutableArray?
- 25. Conversione di NSArray in NSMutableArray
- 26. numero di elementi in NSMutableArray
- 27. Equivalente di NSMutableArray in C++?
- 28. Come aggiungereObject come NSMutableArray in NSMutableArray in swift
- 29. Come aggiungereObject di NSMutableDictionary a NSMutableArray in un ciclo
- 30. iOS come fa NSMutableArray a verificare se contiene oggetti NSNumber?
Se l'oggetto è direttamente privo dell'indice, ciò vale anche per questo? [[anObject retain] autorelease]; [arrayOfObjects removeObject: anObject]; – Frank
@Frank: Sì, lo farebbe. –