2009-08-19 9 views

Odpowiedz

14

W Objective-C i C ogólnie, jeśli coś nie jest wskaźnikiem do innego miejsca w pamięci, a cała rzecz jest przydzielana na stosie, nie będzie potrzeby jej uwalniania. Zostanie zwolniony, gdy tylko wskaźnik stosu zostanie ustawiony na końcu funkcji.

2

Jeśli chodzi o struktury C i zarządzanie pamięcią, Objective-C nie różni się od C: jeśli masz malloc(), to powinieneś to zrobić w pewnym momencie (free()).

4

SEL powinny być traktowane jako rodzaj nieprzezroczystego (to char * na 32-bitowym środowisku wykonawczym) i prawie każdym użyciu będzie statyczna instancja (@selector()) lub „tymczasowy” zmienna (NSSelectorFromString()), z których żaden nie potrzebuje uwolnienia, ponieważ nie przydzieliłeś tego.

+0

Bycie "char *" jest szczegółem implementacji. Implementacja Objective-C może wewnętrznie zaimplementować ją za pomocą prostej liczby całkowitej lub dowolnego mechanizmu, który preferuje. –

+1

Dlatego powiedziałem, że to rodzaj nieprzezroczysty. Użyłem "char *" jako przykładu, kiedy nie jest to struktura. –