2009-08-11 12 views

Odpowiedz

35

Nie, nie kopiuje ich. Zatrzymuje je. Tak, możesz bezpiecznie zwolnić obiekty po dodaniu ich do tablicy.

The docs, jak zawsze, zaklęcie to bardzo wyraźnie:

Tablice utrzymać silne odniesienia do ich zawartości w środowisku pamięci zarządzanej, każdy przedmiot otrzyma zachować wiadomość przed jej id jest dodawany do tablicy i komunikat zwolnienia, gdy zostanie usunięty z tablicy lub gdy nastąpi dezalokacja tablicy. Jeśli chcesz kolekcję z inną semantyką własności obiektu, zamiast tego użyj opcji CFArray Reference, NSPointerArray lub NSHashTable.

+2

Świetna odpowiedź. Należy również pamiętać, że + arrayWithObjects: zwraca tablicę unowned ("autoreleased"), więc należy ją zachować, aby jej nie utracić, ale obiekt w tablicy będzie istniał tak długo, jak długo będzie tablica. –

+0

Wielkie dzięki! Powinieneś wiedzieć, że przeszukuję dokumentację przed opublikowaniem w Stack Overflow (czasami jednak nie łapię wszystkiego). Dziękujemy za poświęcenie czasu, aby odpowiedzieć na moje pytanie. –

+1

Dziękuję za odpowiedź - chociaż ta blurb już nie jest w referencji, to dla ciebie. O ile mogę powiedzieć, że cała sekcja zniknęła. Możesz to tylko wnioskować, patrząc na informacje dotyczące podklasy i kilku wywołań funkcji, a przede wszystkim dlatego, że wskazałeś mi właściwy kierunek. – RonLugge