前言:本篇所写的名词很多可以在下面链接中找到:
初识Prue MVC(基于IOS的文件夹创建、Storyboary的使用及其它)
先附上架构图~~~
1、Model、View、Controller 的作用:
- Model 中存放数据、访问网络
- View 中显示页面
- Controller 中写业务逻辑
2、Delegate (代理模式)的理解:
在 view 中,每一个页面被写成两个子页面:
例如:LoginV 和 LoginM 代理即:
在 LoginV 中定义代理:
protocol LoginVDelegate: class {
func viewDidLoad()
}
weak var _delegate: LoginVDelegate? // 会把 LoginMediator 赋值过来
在 LoginM 中继承自 LoginVDelegate 并:
override func onRegister() {
// 把自己赋值给 View,便于 View 在 viewDidLoad 时调用 LoginMediator 中的 viewDidLoad 函数
view._delegate = self
}
3、一个页面包括两个子文件:V 和 M
- V:真正的视图
- M:该视图的逻辑代码(一个 M 代表一个 Mediator)
4、Command(命令者模式):里面是方法,不需要实例化
5、程序的起始点是:AppFacade.swift 文件,主要的代码如下:
class AppFacade: Facade{
/**
Register Commands with the Controller
*/
override func initializeController() {
super.initializeController()
registerCommand(AppCmd.STARTUP) { AppCmd() }
}
/**
Singleton Factory Method
*/
class func getInstance() -> AppFacade {
return super.getInstance { AppFacade() } as! AppFacade
}
/**
Start the application
*/
func startup(app: AppV) {
// 把 AppVC 的实例 app 做为 viewComponent 传给 StartupCmd,再在 PrepViewCmd 中完成与 AppMediator 的绑定
sendNotification(AppCmd.STARTUP, body: app)
}
}
6、IOS 创建对象不需要 new 关键字,如:book()
7、什么是单例模式?
- 静态函数
- 对象唯一
8、IOS 的资源文件名要全英文格式:如用时间戳代替中文名称
9、Facade 其实是一个数组,里面存放着 Model、View 和 Controller ,访问 Model、View 和 Controller 时必须经过 Facade
10、项目文件中的 Info.plist 是项目的配置文件:
- 单类型
- 可以有子文件夹
11、Command 代码文件中不需要引入 UIKit 等包,里面是纯代码
12、在 Model 中注册 Proxy (代理)
13、Navigation 指的是 AppV,AppV是一个容器里面有其它的 V
14、每一个 view 都有一个 layer,视图刷新变化不要修用 layer:
- V 中的 M:从 viewComponent 中传入,执行 M 中的方法
- M 中的 V:改变 V
15、view 和 controller 中都可以执行 command命令,一般写在 controller 中,写在 view 中的是小程序
END