MVC: (Model View Controller)模型(model)-视图(view)-控制器(controller):
首先什么是MVC:
M是指数据模型,V是指用户界面,C则是控制器。
为什么会引入MVC:
在写一些长一点的东西时,代码会特别长,有的比较麻烦的界面,代码会多达四五百行,当写完后想改什么东西时,有时好久都翻不到写在哪,为了使代码更加易读和操作方便,引入了MVC
MVC的功能原理:
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。(来自百度百科)
简单来说,MVC实现了数据和界面的分离, 数据存在M, 界面写在V, 通过C实现交互。
关于V界面
虽然他叫界面, 但只是一个View继承于UIView, 刚开始写时没注意, 直接让他继承了UIViewController。所以View里的内容其实可以说是重写了View。
在MVC中出现的一个新的传送信息的方法:NSNotification
-
View和Controller之间协议传值, 由于View和Modle之间不能直接交互, 需要Controller, 所以协议传值把View的情况传给Controller, 关于协议传值详见以下链接,
https://blog.csdn.net/qq_44865905/article/details/98985638 -
关于NSNotification的简单使用
1> 发送一个通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"MVCTest" object:self];
2> 添加观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MVCTest:) name:@"MVCTest" object:nil];
3> 通过观察者的方法做出相应动作
- (void)MVCTest:(NSNotification*)notification{
}
4> 当不使用的时候,在dealloc方法中移除观察者
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
我用MVC实现了一个简易的注册和登录界面 github链接如下:
https://github.com/puyuerong/MVCtest