我是iOs开发的新手,希望遵循正确的设计模式,但看起来Xcode默认情况下会强制用户使用MVC设计模式。
我有一个模型(MyApp.h),你有一个视图(我可以在其中拖放组件),我有一个控制器(MyApp.m)。
这是正确的思维方式吗?
谢谢
发布于 2013-05-15 22:23:05
我将使用一个非常基本的示例。
您想要显示一个人员列表,包括他们的姓名、年龄和位置,如下所示:
Bob 32 United States
Paul 22 England
Jack 24 France
...在这里,您将创建一个继承自NSObject的新类,并将其命名为Person。您的类将由一个头文件(.h)和实现文件(.m)组成。它将具有属性,以保存“真实”人员的不同元素,以及访问和/或处理这些元素的方法(获取名称、增加年龄、更改位置)。这是您的模型。
然后,您将使用名为CustomTableViewController的UITableViewController子类来表示数据。这是您的控制器。
视图实际上是UITableViewController中包含的tableView。
MVC模式背后的基本原理是,CustomTableViewController负责tableView和Person对象之间的通信。这发生在您的文件CustomTableViewController.m的tableViewController实现中。
您的tableViewController将(例如)创建一个Person对象数组,从某个地方获取所有数据,创建Person,将它们存储到数组中,等等。
然后,UITableViewController(当然还有它们的子类)实现一个名为cellForRowAtIndexPath:的委托方法,tableView在需要显示单元格时会调用该方法。tableViewController创建一个cell,用数据填充它,并将该单元格传递给tableView。这就是你处理通信的方式。您不需要直接向tableView请求获取数据。
这也是反向工作的。如果您的tableView允许编辑,它将通知tableViewController用户交互,后者的角色是反映您的模型上的修改。
发布于 2013-05-15 22:45:24
Xcode不会“强制MVC”。这是最佳实践,Apple使其易于实现,但MVC中的一个关键概念是模型对象与视图和视图控制器对象的分离,但这种适当的分离完全是通过程序员纪律实现的,而不是通过工具。
无论如何,我建议你参考可可核心竞争力指南中关于Model-View-Controller的苹果入门读物。那个页面上有很多很好的链接。
https://stackoverflow.com/questions/16567017
复制相似问题