Zastanawiam się, kiedy usuniesz obiekt za pomocą removeObject w tablicy, jeśli usunięty obiekt jest obsługiwany poprawnie. Czy usunięty obiekt zostanie zwolniony?Czy removeObject zwalnia obiekt w obiekcie NSMutableArray obiektów?
Odpowiedz
Arkusz NSMutableArray go zwolni. Jeśli to jest ostatnie zatrzymanie, zostanie zwerbalizowane. Z dokumentacji:
Podobnie jak w przypadku NSArray, wystąpienia NSMutableArray zawierają silne odniesienia do ich zawartości. Jeśli nie używasz zbierania śmieci: [Jed: iPhone nie], po dodaniu obiektu do tablicy, obiekt odbiera komunikat zatrzymania. Kiedy obiekt jest usuwany z tablicy zmiennych, otrzymuje komunikat zwolnienia. Jeśli nie ma dalszych odniesień do obiektu, oznacza to, że obiekt został zwolniony. Jeśli twój program zachowuje odniesienie do takiego obiektu, odwołanie stanie się nieważne, chyba że wyślesz obiekt do zatrzymania, zanim zostanie on usunięty z tablicy.
Zobacz NSMutableArray documentation. Ich przykładem, w rzeczywistości odnosi się do removeObjectAtIndex:
:
id anObject = [[anArray objectAtIndex:0] retain];
[anArray removeObjectAtIndex:0];
[anObject someMessage];
Tak, po usunięciu obiektu z obiektu NSMutableArray następuje jego zwolnienie. Jeśli jego wartość zatrzymania wynosi 0, zostanie zwolniona (lub zostanie pobrana śmieciarka, jeśli zamiast tego uruchomiono system OS X z włączoną opcją GC).
Tak. Kolekcje zachowują wartości, które zbierają, gdy wartości są dodawane do kolekcji, co oznacza, że wartości są zwalniane, gdy zostaną usunięte z kolekcji.
Ponieważ każdy ma wspomniano, przedmiotem NSMutableArray uwalnia się po usunięciu z matrycy.
Jeśli nie chcesz zwolnić obiektu, zatrzymaj go tuż przed wywołaniem metody usuwania obiektu. W takim przypadku odpowiadasz za jego późniejsze wydanie:
MyClass *objectToBeRemoved=[myArray objectAtIndex:indexPath.row];
[objectToBeRemoved retain];
[myArray removeObject:objectToBeRemoved];
- 1. Zmiana właściwości wszystkich obiektów w obiekcie NSMutableArray
- 2. CoreDataGeneratedAccessors - removeObject usuwa obiekt?
- 3. Jak sortować obiekt NSMutableArray obiektów zarządzanych za pomocą wykresu obiektów
- 4. dostać obiektów w NSMutableArray
- 5. Ember.js removeObject for forNie usuwaj wszystkich obiektów
- 6. Jak zapisywać wartości NSTimeInterval w obiekcie NSMutableArray?
- 7. Jak zamienić obiekt w obiekcie NSMutableArray na danym indeksie na nowy obiekt?
- 8. Jak zaimplementować obserwowanie wartości kluczy w obiekcie NSMutableArray
- 9. Pętla przez NSMutableArray obiektów niestandardowych w najbardziej efektywny sposób pamięci
- 10. Dodawanie obiektów ciąg do NSMutableArray?
- 11. Jak sortować NSMutableArray obiektów daty
- 12. jak dodać obiekt do NSMutableArray
- 13. Czy mogę umieścić różne typy obiektów w tej samej NSMutableArray?
- 14. Zapisz/Zapisz NSMutableArray obiektów na dysk?
- 15. cel-c: Jak zaktualizować obiekt w NSMutableArray?
- 16. OBJ-C: Uzyskiwanie wartości minimalnej/maksymalnej w obiekcie NSMutableArray
- 17. Kolekcja NSMutableArray i @Synchronized blocks
- 18. Obiekt wstawiania obiektu NSMutableArray pod indeksem
- 19. Pobranie ostatnich obiektów x z obiektu NSMutableArray
- 20. Czy ARC zwalnia pamięć malloc'ed?
- 21. JavaScript: Wywoływanie metod obiektów w tym obiekcie
- 22. wykrywanie obiektów wewnętrznych w obiekcie scala
- 23. Jak utworzyć obiekt NSMutableArray i przypisać do niego określony obiekt?
- 24. Jak monitorować zmiany obiektów zawartych w obiekcie ObservableList JavaFX
- 25. Obserwowanie liczby w NSMutableArray
- 26. Dziwny obiekt własny w obiekcie okna
- 27. Równoważnik NSMutableArray w C++?
- 28. NSMutableSet vs NSMutableArray
- 29. Wystawianie prototypów w obiekcie
- 30. Efektywny algorytm uzyskiwania kombinacji wszystkich obiektów w obiekcie
Jeśli mamy obiekt bezpośrednio bez indeksu, czy to również ma zastosowanie? [[Zatrzymaj anObject] autorelease]; [arrayOfObjects removeObject: anObject]; – Frank
@Frank: Tak, to by było. –