Я могу построить UIImageView
объект с myImageView = [[UIImageView alloc] initWithImage:image];
После действия приложения, влияющего на отображение, если я хочу изменить изображение в UIImageView.Я могу сделать это, переназначив его с myImageView.image = someNewImage
.Однако, похоже, это не обновляет размеры кадра.Я могу изменить их вручную, но на практике я заметил, что вызов [myImageView initWithImage:someNewImage]
делает это для меня и имеет преимущество в том, что он более краткий.
Однако я не уверен, является ли это официальным нарушением протокола в ObjectiveC, чтобы сделать несколько вызовов init методов для объекта, созданного одним alloc .Я бы не использовал его, если бы он не был безопасным (гарантированно, чтобы не разбиться или не вызвать утечки).Есть ли доказательства того, что это небезопасно?
Мои исследования до сих пор ...
В этой статье приводятся общие сведения о 'alloc' и 'init' для объектов
http://developer.apple.com/library/mac/documentation/cocoa/Conceptual/ObjectiveC/Articles/ocAllocInit.html
Это связанный вопрос SO
Почему alloc и init вызываются отдельно в Objective-C?
Эта статья в блоге предупреждает поставщиков объектов, которые их методы init могут вызывать несколько раз в качестве эффекта процесса инициализации.
http://www.friday.com/bbum/2009/09/06/iniailize-can-be-executed-multiple-times-load-not-so-much/