Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何选择在视图和ViewController中放置的代码?_Iphone_Cocoa Touch_Uiviewcontroller - Fatal编程技术网

Iphone 如何选择在视图和ViewController中放置的代码?

Iphone 如何选择在视图和ViewController中放置的代码?,iphone,cocoa-touch,uiviewcontroller,Iphone,Cocoa Touch,Uiviewcontroller,在Xcode中,实用程序应用程序模板生成具有以下内容的项目: 主视图,主视图控制器 及 FlipsideView,FlipsideView控制器 在我的应用程序中,这两个视图对应于主UI和首选项屏幕。显然,我希望pref反映在主UI中,并保存到磁盘以记住设置。我知道怎么做那部分 问题是,在查看类似应用程序的示例代码时,我发现有些应用程序将大部分活动代码放在视图中,而ViewController只剩下一个存根,而有些应用程序则相反 在决定将我的大部分功能放在何处时,是否有经验法则可以依据?如果你想

在Xcode中,实用程序应用程序模板生成具有以下内容的项目:

主视图,主视图控制器

FlipsideView,FlipsideView控制器

在我的应用程序中,这两个视图对应于主UI和首选项屏幕。显然,我希望pref反映在主UI中,并保存到磁盘以记住设置。我知道怎么做那部分

问题是,在查看类似应用程序的示例代码时,我发现有些应用程序将大部分活动代码放在视图中,而ViewController只剩下一个存根,而有些应用程序则相反


在决定将我的大部分功能放在何处时,是否有经验法则可以依据?

如果你想成为MVC纯粹主义者,视图切换和事件处理之类的事情应该放在控制器中,视图构建代码应该放在视图中


但是,如果你在整个应用程序中保持一致,可以在视图中放置一些应用程序逻辑。

一种决定方法:如果你的应用程序收到内存不足警告,默认行为是,当前不可见的任何视图都可能被破坏。这意味着,如果您有任何无法轻松重新创建的状态信息,最好不要将其保留在视图中


因此,这取决于您的大部分功能在做什么:如果它在维护用户创建的信息,它需要在视图控制器中。

关于模型视图控制器,StackOverflow已经有几个问题。例如,请参见


在您的特定场景中,首选项本身是一种跟踪用户首选项的模型。保存和加载这些首选项是控制器的职责。显示这些首选项并为用户提供更改它们的方法是视图的职责。最后,当用户更改这些首选项时,视图会将此报告给控制器,控制器会对模型进行适当的更改。

我同意通常只有视图建筑代码属于视图类。通常,不需要视图构建代码,因此可以完全摆脱视图类。