为什么UIImageView拥有UIImage.它违反了MVC原则吗?

Lou*_*yen 6 model-view-controller objective-c uiimageview uiimage ios

MVC的主要原则之一是视图永远不应该拥有数据.这个原则在WWDC Session 116中重复多次.但是为什么UIImageView(一个视图)拥有UIImage(一个模型)?它不违反上述原则吗?

或者我在这里误解了什么?也许只是因为UIImageView有一个image特性,并不意味着它拥有的是UIImage

Cal*_*leb 7

单词own通常仅用于表示一个对象保留了另一个对象.显然,显示图像的视图应该保留该图像,只要它需要它.但是这种"所有权"的概念非常有限,并不意味着视图应该负责存储,更改或以其他方式管理图像.

  • UIImageView需要对图像的引用,因为它可能需要重绘自己,而它需要做的数据就是图像.如果它不保留图像,则可以随时轻松地释放图像,并且视图将留下无效指针(并且可能会崩溃).它保留了它正在使用的图像,直到有人告诉它使用其他图像. (2认同)