2012-12-30 11 views

Odpowiedz

5

Pod ARC wzór jest ... nie rób niczego w dealloc, ani nawet nie implementuj go. ARC dba o twoje właściwości i zmienne instancji.

Jedynym wyjątkiem jest to, że dealloc jest dobrym miejscem do wyrejestrowania się z powiadomień, jeśli obiekt został zarejestrowany.

+0

Niezarejestrowane powiadomienia w dealloc są bardzo ważne, ponieważ tego typu błędy są bardzo trudne do znalezienia. – amb

+0

Jeśli jakiekolwiek objecs mają dowolnych delegatów, delegatów można tutaj również pominąć. 'someObject.delegate = nil;' – GangstaGraham

+1

@GangstaGraham, jeśli obiekty mają słabe odniesienia do swoich delegatów, nie powinieneś tego robić, ale okazało się, że trzeba to zrobić, szczególnie w przypadku widoku przewijania i widoku WWW delegaci, nawet w ramach ARC. – jrturton

0

Dobre pytanie. Podczas korzystania z ARC kompilator zaimplementuje dla ciebie metodę dealloc i będzie obsługiwać niejawnie uwalnianie zmiennych i właściwości instancji.

Możesz nadal potrzebować niestandardowego - dealloc, jeśli twoja klasa potrzebuje zrobić coś innego niż zwolnienie pamięci (np. Wyrejestrowanie dla powiadomień takich jak wspomniano jrturton).

Możesz dobrze zrozumieć, co należy wziąć pod uwagę, przechodząc na ARC w oficjalnej wersji Apple notes.

Powiązane problemy