2011-11-26 5 views
5

Jeśli zaimplementujesz willMoveToSuperview na podklasie UIView, czy jest zagwarantowane wywołanie (z nil), gdy w twoim widoku zostanie wywołana removeFromSuperview?Czy willMoveToSuperview jest wywoływany (z zerem) podczas usuwania widoku z hierarchii?

Docs powiedzieć, że parametr newSuperview może być nil i że nazywa „Kiedykolwiek zmiany Superview” ale nie jestem pewien, czy mogę zinterpretować to oznaczać to będzie wywoływana, gdy widok jest usuwany z jego podglądu, nawet jeśli nie jest przenoszony do innego superviewu.

Odpowiedz

13

Gdy widok otrzymuje removeFromSuperview, a widok podglądu nie był już zerowy, widok zawsze będzie miał wartość [self willMoveToSuperview:nil].

+0

Czy zakładasz, że widok jest nadal zachowany? Jeśli jego stary super widok jest jedynym właścicielem, widok zniknie na zawsze po "removeFromSuperview", prawda? – Philip007

+0

Metoda 'removeFromSuperview' wysyła' willMoveToSuperview: 'i' didMoveToSuperview' do 'self' przed ostatecznym zwolnieniem' self'. Jeśli superview miał jedyne silne odwołanie do subview, subview otrzyma wiadomości zanim zostanie zwolniony. –

Powiązane problemy