0

是的,我是 Xcode 的菜鸟。现在我正在阅读 Big Nerd Ranch IOS 编程书,我只需要对模型-视图-控制器位进行一点说明。

模型类称为“CellData”,NSObject View 类称为“CellView”,UIView Controller 类称为“CellAppDelegate”,UIResponder。

DrawRect 方法根据 CellData 类中的数据使用颜色进行大量绘图。到目前为止,一切似乎都告诉我,我不应该从我的“CellView”类中调用“CellData”方法。通常是的,当您只使用带有 TestFields 的 UIButtons 时,是的,非常有意义。

在这种情况下,我必须将一个值从“CellData”传递到“CellView”最多 6000 次才能刷新视图。继续在使用 CellAppDelegate 之间来回调用是否仍然有意义(计算机似乎需要做更多的工作),还是我真的“允许”从 CellData 检索值?

4

2 回答 2

2

你自己真的回答了你的问题。不,每次渲染 6000 次调用不是正确的做法,尤其是在会频繁重绘的表格视图单元格上。

就个人而言,我认为控制器的工作是从模型层(业务逻辑等发生的地方)请求数据对象并将它们传递给视图。所以,在你的情况下,我只会将数据对象传递到你的单元格中。(我会将它作为您单元格上的一个属性,并带有一个也调用[self setNeedsDisplay];触发重绘的设置器)

话虽如此,我也倾向于支持模型层提供不可变的数据对象,这样控制器/视图就不会对它们做任何错事:) 使用这种方法,如果控制器想要编辑数据对象,它就必须调用模型层中的一个方法来做到这一点。

当然,这只是我个人对建筑的看法和选择。显然,对于现有的 UI 对象(即 UILabel 等),我无法传入数据对象,我必须直接从我的视图控制器设置 text 属性。


PS对于视图控制器来说CellAppDelegate是个坏名字——习惯是用 . 结尾的类名。这种命名方案可以很容易地在一周左右的时间内回到您的代码,并且仍然了解所有内容的作用:)ViewControllerCellAppViewController

于 2012-08-29T16:37:06.300 回答
0

到目前为止,一切似乎都告诉我,我不应该从我的“CellView”类中调用“CellData”方法。

这听起来像是一个误解。CellView控制器交给一个类似的东西是非常常见CellData的。视图可以自由查询它负责显示的模型对象。这不违反 MVC。它通常不应该写入模型对象,也不应该与其他模型对象对话。

于 2012-08-29T16:43:00.447 回答