mogę skonstruować UIImageView
obiekt z myImageView = [[UIImageView alloc] initWithImage:image];
Czy można bezpiecznie wywołać inicjalizatory wiele razy na tym samym obiekcie 'alloc'ed?
wyniku aktywności aplikacji wpływających na wyświetlacz, jeśli chcę zmienić obraz na UIImageView. Mogę to zrobić, zmieniając go na myImageView.image = someNewImage
. Jednak nie wydaje się, aby zaktualizować wymiary ramy. Mogę modyfikować te ręcznie, ale zauważyłem w praktyce, że wywołanie [myImageView initWithImage:someNewImage]
robi to dla mnie i ma tę zaletę, że jest terser.
Jednak ja nie wiem, czy to oficjalnie naruszenie protokołu w Objective C, aby kilka połączeń do init metod na obiekcie wybudowanym przez jednego Alloc. Nie użyłbym go, chyba że byłby bezpieczny (gwarantowany, że nie ulegnie awarii lub nie spowoduje wycieków). Czy istnieją dowody na to, że jest to niebezpieczne?
Moje badania do tej pory ...
Ten artykuł zawiera ogólne szczegółów o 'Alloc' i 'INIT' na obiektach
Wiąże SO pytanie
Why are alloc and init called separately in Objective-C?
Ten artykuł na blogu ostrzega dostawców obiektów, że ich metody inicjujące mogą być wywoływane wiele razy jako efekt procesu inicjalizacji.
http://www.friday.com/bbum/2009/09/06/iniailize-can-be-executed-multiple-times-load-not-so-much/
Wpis blogu bbum omawia inicjalizację + (void) (inicjowanie na poziomie klasy) i nie - (void) init. –