IOS下的MVC
一、概念 Model = 你的应用程序是什么,是用户界面无关的部分 Controller = 你的应用程序如何将Model显示给用户(UI逻辑),是中心是桥梁,连通Model和View View = Controller的奴才(minion)、小跟班。view一切听从Controller的指挥,并及时将重要事件报告给Controller
二、通信 mvc设计模式,IPhone MVC设计模式要点
1、Model和View永远不能相互通信,只能通过Controller传递。
2、Controller可以直接与Model对话(读写调用Model),Model通过Notification和KVO机制与Controller间接通信。
3、Controller可以直接与View对话(通过outlet,直接操作View,outlet直接对应到View中的控件),View通过 action向Controller报告事件的发生(如用户Touch我了)。Controller是View的直接数据源(数据很可能是 Controller从Model中取得的)。Controller是View的代理(delegate),以同步View与Controller,delegate是一组协议,表示程序将要或者已经处于某种状态时,来调整View,以对用户有个交代。例如系统内存不足了,你是 不是相应的降低view的质量以节省内存。
注:突然冒出个delegate,让人不好理解,其实他不对应xcode为我们创建的XXAppDelegate文件,此文件不属于MVC中的任何一部分,虽然与MVC有联系。
三、实作 建立一个BtnClick工程系统,会为我们生成以下文件:
BtnClickAppDelegate.h
BtnClickAppDelegate.m
以上两个文件定义了实现UIApplicationDelegate协议的类 BtnClicAppDelegate,UIApplicationDelegate协议是系统预定义的协议,负责监视应用程序的高层行为,处理几个关键 系统消息,是应用程序生命周期为我们预留的Hook,每个iphone应用程序必不可少的。
iphone应用程序的生命周期: mvc设计模式,IPhone MVC设计模式要点
BtnClickViewController.h BtnClickViewController.m 实现了MVC中的Controller.可以定义一些IBOutlet元素和IBAction方法与View通信。
@interface BtnClickViewController : UIViewController{ IBOutlet UILabel* statusText; } @property (retain, nonatomic ) UILabel *statusText; - ( IBAction )buttonPressed:( id )sender; @end |
View对于那个文件?
答案是Resource下的MainWindow.xib和BtnClickViewController.xib。
MainWindow.xib文件在在应用程序加载是会被自动加载,这其实是在plist文件中配置的。然后MainWindow.xib会加载子视图 BtnClickViewController.xib。为什么会命名为ViewController,而不是分开命名?可能是因为View和Controller关系太紧密了,view就是Controller的跟班。
实际编程时一定要分清MVC各部分的职责。
自始至终没间Model的面,其实M是可选的,特别是对于简单的应用。任何与界面无关的,我们添加的自定义类来定义我们的应用程序的对象,都属于Model的范畴。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述