Почему UIImageView имеет собственный UIImage.Это нарушает принципы MVC? - PullRequest
6 голосов
/ 09 февраля 2012

Один из основных принципов MVC - представления должны никогда собственных данных. Этот принцип повторяется много раз в Сессии WWDC 116. Но тогда почему UIImageView (представление) владеет UIImage (модель)? Разве это не нарушает вышеуказанный принцип?

Или я что-то здесь неправильно понимаю? Может быть, то, что UIImageView имеет свойство image, не означает, что ему принадлежит UIImage?

Ответы [ 3 ]

7 голосов
/ 09 февраля 2012

Слово own часто используется просто для обозначения того, что один объект сохранил другой. Очевидно, что представление, отображающее изображение, должно сохранять это изображение до тех пор, пока оно ему необходимо. Но это понятие «владения» очень ограничено, и это не означает, что представление должно отвечать за хранение, изменение или иное управление изображением.

4 голосов
/ 09 февраля 2012

Хороший вопрос. По моему мнению, UIImageView не «владеет» UIImage, но ему, очевидно, нужно иметь ссылку на него. UIImageView не создает экземпляр изображения.

Тот же аргумент может быть приведен для UILabel (представление), имеющего свойство text (модель).

1 голос
/ 09 февраля 2012

Технически, UIImageView не владеет изображением, оно сохраняет ссылку на копию изображения , чтобы иметь возможность эффективно его визуализировать. UIImage просто оказывается неизменным, поэтому копия - это тот же экземпляр, что и оригинал.

UILabel ведет себя идентично, но явно объявляет свое свойство text как copy.

...