《iOS 8开发指南》——第6章,第6.2节Xcode中的MVC

简介:

本节书摘来自异步社区《iOS 8开发指南》一书中的第6章,第6.2节Xcode中的MVC,作者 管蕾,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.2 Xcode中的MVC
iOS 8开发指南
在用Xcode编程并在Interface Builder中安排用户界面(UI)元素后,Cocoa Touch的结构旨在利用MVC(Model-View-Controller,模型—视图—控制器)设计模式。在本节的内容中,将讲解Xcode中MVC模式的基本知识。

6.2.1 原理
MVC模式会将Xcode项目分为如下3个不同的模块。

1.模型
模型是应用程序的数据,比如项目中的数据模型对象类。模型还包括采用的数据库架构,比如Core Data或者直接使用SQLite文件。

2.视图
顾名思义,视图是用户看到的应用程序的可视界面。它包含在Interface Builder中构建的各种UI组件。

3.控制器
控制器是将模型和视图元素连接在一起的逻辑单元,处理用户输入和UI交互。UIKit组件的子类,比如UINavigationController和UITabBarController是最先会被想到的,但是这一概念还扩展到了应用程序委托和NSObject的自定义子类。

虽然在Xcode项目中,上述3个MVC元素之间会有大量交互,但是创建的代码和对象应该简单地定义为仅属于三者之一。当然,完全在代码内生成UI或者将所有数据模型方法存储在控制器类中非常简单,但是如果你的源代码没有良好的结构,会使模型、视图和控制器之间的分界线变得非常模糊。

另外,这些模式的分离还有一个很大的好处是可重用性!在iPad出现之前,应用程序的结构可能不是很重要,特别是不打算在其他项目中重用任何代码的时候。过去我们只为一个规格的设备(iPhone 320×480的小屏幕)开发应用程序。但是现在需要将应用程序移植到iPad上,利用平板电脑的新特性和更大的屏幕尺寸。如果iPhone应用程序不遵循MVC设计模式,那么将Xcode项目移植到iPad上会立刻成为一项艰巨的任务,需要重新编写很多代码才能生成一个iPad增强版。

例如,假设根视图控制器类包含所有代码,这些代码不仅用于通过Core Data获取数据库记录,还会动态生成UINavigationController以及一个嵌套的UITableView用于显示这些记录。这些代码在iPhone上可能会良好运行,但是迁移到iPad上后可能想用UISplitViewController来显示这些数据库记录。但是此时需要手动去除所有UINavigationController代码,这样才能添加新的UISplitViewController功能。但是如果将数据类(模型)与界面元素(视图)和控制器对象(控制器)分开,那么将项目移植到iPad的过程会非常轻松。

6.2.2 模板就是给予MVC的
Xcode提供了若干模板,这样可以在应用程序中实现MVC架构。

1.view-based application(基于视图的应用程序)
如果应用程序仅使用一个视图,建议使用这个模板。一个简单的视图控制器会管理应用程序的主视图,而界面设置则使用一个Interface Builder模板来定义。特别是那些未使用任何导航功能的简单应用程序应该使用这个模板。如果应用程序需要在多个视图之间切换,建议考虑使用基于导航的模板。

2.navigation-based application(基于导航的应用程序)
基于导航的模板用在需要多个视图之间进行间切换的应用程序。如果可以预见在应用程序中,会有某些画面上带有一个“回退”按钮,此时就应该使用这个模板。导航控制器会完成所有关于建立导航按钮以及在视图“栈”之间切换的内部工作。这个模板提供了一个基本的导航控制器以及一个用来显示信息的根视图(基础层)控制器。

3.utility application(工具应用程序)
适合于微件(Widget)类型的应用程序,这种应用程序有一个主视图,并且可以将其“翻”过来,例如iPhone中的天气预报和股票程序等就是这类程序。这个模板还包括一个信息按钮,可以将视图翻转过来显示应用程序的反面,这部分常常用来对设置或者显示的信息进行修改。

4.OpenGL ES application(OpenGL ES应用程序)
在创建3D游戏或者图形时可以使用这个模板,它会创建一个配置好的视图,专门用来显示GL场景,并提供了一个例子计时器可以令其演示动画。

5.tab bar application(标签栏应用程序)
提供了一种特殊的控制器,会沿着屏幕底部显示一个按钮栏。这个模板适用于像iPod或者电话这样的应用程序,它们都会在底部显示一行标签,提供一系列的快捷方式,来使用应用程序的核心功能。

6.window-based application(基于窗口的应用程序)
提供了一个简单的、带有一个窗口的应用程序。这是一个应用程序所需的最小框架,可以用它作为开始来编写自己的程序。

相关文章
|
2月前
|
Linux 数据安全/隐私保护 iOS开发
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
|
6月前
|
存储 iOS开发 开发者
ios AppStore 上架流程(Xcode11.5)
ios AppStore 上架流程(Xcode11.5)
|
3月前
|
设计模式 前端开发 数据库
IOS开发基础知识:什么是 MVC 架构?它在 iOS 中的应用是什么样的?
IOS开发基础知识:什么是 MVC 架构?它在 iOS 中的应用是什么样的?
25 1
|
8月前
|
iOS开发
iOS Xcode 意外退出 打不开工程
iOS Xcode 意外退出 打不开工程
109 0
|
6月前
|
iOS开发 芯片 MacOS
[Xcode 12, building for iOS Simulator, but linking in object file built for iOS, for architecture...
[Xcode 12, building for iOS Simulator, but linking in object file built for iOS, for architecture...
127 0
|
6月前
|
iOS开发 开发者
Xcode7.2真机调试iOS 9.3的设备
Xcode7.2真机调试iOS 9.3的设备
108 0
|
9月前
|
iOS开发
Xcode 12.3 编译提示Building for iOS Simulator, but the linked and embedded framework
Xcode 12.3 编译提示Building for iOS Simulator, but the linked and embedded framework
|
11月前
|
Linux 数据安全/隐私保护 iOS开发
如何使用 Xcode 打包导出 IPA 文件并进行 iOS 应用内测,无需支付苹果开发者账号费用?
苹果开发者账号认证需要支付 688 元,对于初学 iOS 开发的同学来说,仅仅是为了进行内测而不需要上架 App Store,这样的费用是不必要的。
|
11月前
|
Linux 数据安全/隐私保护 iOS开发
如何使用Xcode打包导出IPA文件并进行iOS应用内测,无需支付苹果开发者账号费用?
苹果开发者账号认证需要支付688元,对于初学iOS开发的同学来说,仅仅是为了进行内测而不需要上架App Store,这样的费用是不必要的。但是,有一款名为APP Uploader的软件可以解决这个问题,只需要注册苹果个人开发者账号,无需支付688元认证,即可打包自己开发的iOS应用,并提供给他人测试。
|
11月前
|
Linux 数据安全/隐私保护 虚拟化
Ios上架app无需688,xcode打包导出IPA,供人内测
无需支付688苹果开发者账号,xcode打包导出ipa,提供他人进行内测 众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需求