Ich kann ein UIImageView
Objekt mit myImageView = [[UIImageView alloc] initWithImage:image];
Ist es sicher, Initialisierer mehrere Male auf dem gleichen "allokierten" Objekt aufzurufen?
Nach Anwendungsaktivität konstruieren, um das Display zu beeinflussen, wenn ich das Bild auf der UIImageView ändern möge. Ich kann dies tun, indem ich es mit myImageView.image = someNewImage
neu zuweisen. Dies scheint jedoch die Rahmenmaße nicht zu aktualisieren. Ich kann diese manuell ändern, aber ich habe in der Praxis beobachtet, dass das Anrufen [myImageView initWithImage:someNewImage]
das für mich tut, und den Vorteil hat, terser zu sein.
aber ich, wenn es nicht sicher ist offiziell ein Bruch des Protokolls in Objective C mehrere Aufrufe init Methoden auf ein Objekt durch einen einzigen alloc konstruiert zu machen. Ich würde es nicht benutzen, wenn es nicht sicher ist (garantiert keinen Absturz oder Leckagen). Gibt es Beweise, dass es unsicher ist?
Meine Forschung so weit ...
Dieser Artikel allgemeine Details 'alloc' und 'init'
Dies bezieht Frage SO
Why are alloc and init called separately in Objective-C?
gibt auf ObjekteDieser Blogartikel warnt Lieferanten von Objekten, deren Init-Methoden als Auswirkung des Initialisierungsprozesses mehrfach aufgerufen werden können.
http://www.friday.com/bbum/2009/09/06/iniailize-can-be-executed-multiple-times-load-not-so-much/
Der Blogeintrag von bbum behandelt + (void) initialisieren (Initialisierung auf Klassenebene) und nicht - (void) init. –