Rozwiążę tutaj odpowiedź Andrei (przegłosuj go!), Ponieważ odpowiedź nie jest prosta, chyba że masz na myśli tylko elementy interfejsu użytkownika, w którym to przypadku powinny one być słabe (, wszystkie).
IBOutlety są takie, jakie je zdefiniujesz. Jeśli używasz:
@property (nonatomic, strong) IBOutlet UIView *someView;
powinieneś nil to podczas rozładunku nadrzędnego widok/okno.
Jeśli zrobić:
@property (nonatomic, weak) IBOutlet __weak UIView *someView;
Nie trzeba do zera zmiennej, ponieważ będzie to auto zero'ed.
To, w jaki sposób zerujesz, zależy wyłącznie od Ciebie. Przed ARC użyłem:
[someView_ release], someView_ = nil;
Teraz masz dwie opcje: albo użyć setter (utworzony zz @synthesize
) lub ustawić podstawową ivar bezpośrednio. Wynik jest taki sam - w obu przypadkach kwalifikatory całego życia obiektu zwrócą uwagę na jego ostateczne wykorzystanie i zwolnią go.
Więc śmiało i to zrobić:
self.someView = nil
lub
@synthesize someView = someView_;
...
someView_ = nil;
możliwy duplikat [IBOutlet i viewDidUnload pod ARC] (http://stackoverflow.com/questions/7682322/iboutlet-and-viewdidunload-under-arc) –