iOS/Cocoa数据控制器类-这是标准做法吗?

iOS/Cocoa数据控制器类-这是标准做法吗?,ios,class,cocoa-touch,controller,Ios,Class,Cocoa Touch,Controller,我已经完成了前两个在线教程“你的第一个iOS应用程序”和“你的第二个iOS应用程序”。后者使用数据控制器类,如图所示 我现在正在通过“iOS编程:大书呆子牧场指南第三版”。然而,它似乎没有引用数据控制器类,似乎将方法放入模型类本身(即,MyClass.m,而不是MyClassDataController.m) 我相信最终一切都会变得清晰,但有人能给我一个更广泛的参照系吗?使用数据控制器类只是一种风格决定吗?我看过其他几本书,它们似乎也没有提到数据控制器 这是个好问题!老实说,这两种方法都是可以接

我已经完成了前两个在线教程“你的第一个iOS应用程序”和“你的第二个iOS应用程序”。后者使用数据控制器类,如图所示

我现在正在通过“iOS编程:大书呆子牧场指南第三版”。然而,它似乎没有引用数据控制器类,似乎将方法放入模型类本身(即,
MyClass.m
,而不是
MyClassDataController.m


我相信最终一切都会变得清晰,但有人能给我一个更广泛的参照系吗?使用数据控制器类只是一种风格决定吗?我看过其他几本书,它们似乎也没有提到数据控制器

这是个好问题!老实说,这两种方法都是可以接受的。Aaron Hillegrass(BNR书籍的合著者)是一位非常受尊敬的开发人员(他甚至曾经培训过苹果的工程师),很明显,你看到的苹果示例代码可以说是“从马口中”

为什么苹果建议你在他们的应用程序中使用单独的数据控制器?好的,如果您的数据控制器符合相关协议,您可以直接将其插入类似于
UITableView
的程序中。如果您正在编写一个通用的iPad/iPhone应用程序,该应用程序对这两种设备具有不同的视图,那么这可能非常有用。如果您正在使用故事板,这也非常有用。正如苹果公司所说:

数据控制器类允许应用程序中的其他对象访问对象[…],而无需了解数据模型是如何实现的


但这可能有点过分:有很多应用程序不使用这种模式,它们将这种逻辑引入视图控制器本身。两者都有利弊。换一种说法:当你浏览苹果在其开发者网站上发布的示例代码时,你会发现很多应用程序没有遵循苹果在“你的第二个iOS应用程序”教程中建议的模式

将其视为从控制器和视图中分离数据(模型)的中间方法

一个很好的练习,一旦你进一步了解了(非常好,IMHO)BNR书,就是用核心数据而不是数据控制器重写观鸟示例

这不需要做太多的工作(我已经做了),如果您真的尝试将核心数据用于像这样简单的事情,您将对其有更好的理解


祝你好运。

在成功之前,不要太担心结构:)如果模型和演示文稿有很好的分离类,并且编写了有意义的可读代码,那么你就走上了正确的道路。随着您变得越来越有经验,您最终将更容易识别常见模式和最佳实践。只是一点时间和努力,没有其他:)因为我没有这本书,我不能说这本书是误导你,还是只是走了教学的捷径,稍后会加以扩展。但我看到这本书有一个论坛(),Joe Conway(作者之一)似乎经常在那里发帖。所以你可以试着问一下,我现在明白了。“我的第二个iOS应用程序”中的数据控制器类只是数组对象(可变)的一个类,它包含指向所有MyClass对象的指针(实际上是观鸟)。datacontroller这个词听起来和ViewController非常相似,以至于我认为它是一个比实际更正式的野兽!谢谢大家。在后面的章节中,你们将有数据控制器。@Josh Caswell谢谢。我也这么怀疑,但它们并没有列在索引中,粗略地浏览一下也帮不了我:)这是一个很好的建议。我很可能会那样做!感谢您的帮助。感谢您的帮助,并向您保证这不是一个荒谬的查询:)了解它可能与iPhone和iPad视图的各种需求很好地结合这一事实是很有用的。另一个用例是支持OS X和iOS,只需对数据管理代码进行最小的更改,虽然这几乎不是一个常见的要求,但您是否有任何具体的例子想与大家分享。。关于iOS和OSX之间的代码共享,您所说的“特定示例”是什么意思?