(第一次在这里提问,请原谅我的礼仪错误)
基本情况:我有多个可以在屏幕上移动的图像。
简单解决方案#1:
主循环将遍历对象数组,告诉每个对象移动自己,然后告诉视图刷新自己 [self.view setNeedsDisplay]
。然后,视图会获取数组并逐个绘制其在屏幕上的位置处的对象。
非常简单的示例项目,在其中放置了200个箭头的NSArray并将它们移动这里。
简单解决方案#2:
然后,我开始尝试让对象具有自己的视图作为属性。
当将对象添加到主要NSArray中时,视图会添加到主绘图视图中。 [self.view addSubView:newThing.view]
。
主循环将遍历对象并告诉它们移动。在对象类内部,移动将导致视图的frame.origin移动,从而导致它们在主视图上移动。
这也具有优势,即对象可以添加子视图到其图像中(如果需要),例如粒子效果或相关的子视图。
缺点是它似乎将更多类似视图的代码放入模型中,并隐藏了一些视图工作。
简单示例项目这里。
注意:两个示例项目都绘制了比我在实际模拟器中预期需要的更多的内容。
我的“问题?”
解决方案#2使代码看起来更加清洁,进行一些简短的分析表明,在我达到数千个对象之前,似乎没有太多性能或内存差异,然后绘图版本可以节省大量内存开销。但即使在400个对象时,持有所有这些视图所需的额外内存也不是很多。
我是否忽略了不应使用解决方案#2的某些原因?让模型对其最终绘制内容更加聪明,是否会“破坏”VMC?