iOS开发设计模式之MVC

本片文章介绍MVC设计模式及其在iOS开发中的使用技巧

  • 什么是MVC设计模式

MVC是设计模式的起源,也是在软件工程领域使用最多的一种设计模式。

MVC即:Model模型、View视图、Controller控制器

模型:

在模型对象中封装数据并定义操作数据的特定逻辑行为

模型可以表示复杂的数据结构,可以是屏幕上显示的数据、等待处理的数据等

视图:

使用视图对象向用户展示信息

视图对象可以响应用户的操作,并懂得如何将自己展现在屏幕上

视图对象通常从应用程序的模型对象中获取数据用以展示。

可以跟一个模型对象的部分、整体或者多个模型对象合作。

控制器:

使用控制器将模型和视图联系在一起,就像视图对象和模型对象的中间人。

控制器对象还可以为应用程序执行其他操作,比如管理其他对象的生命周期,进行设置和协调工作

用户通过从视图对象(如在文本框中输入)得到的值,传给控制器对象,控制器对象也可以让视图对象根据此用户操作改变其外观或行为。

  • 模型的使用

1. 在控制器中封装模型对象(数组)

如果是简单对象(如NSString),无需使用模型类进行封装

如果是非OC对象,则应进行一定的封装;

如果是词典数据,则应字典转模型

2. 字典转模型

在iOS中数据的来源往往是:JSON、plist、XML等,这些数据首先转换为字典或数组。

为了方便管理字典中的数据,采用字典转模型的方法,以模型对象管理。

字典的key作为模型中的属性名

字典中的value作为模型对象中的属性值。

构造模型对象的方法中,传递字典对属性进行初始化,

3. 控制器的模型数组属性应当采取懒加载方式

即:重写数组的getter方法,让模型数据在第一次被使用时加载。

在属性指针为nil时,从指定位置将数据加载的程序中,并创建数组将数据存储到数组中。

指定的位置可以是本地的数据库、plist、JSON,网络传递过来的数据等。

  • 视图的使用

纯代码设计视图:

1. 定义一个视图子类

2. 提供类方法创建视图对象

2.1 类方法封装alloc+init

2.2 重写init方法,创建所有的子视图并进行一次性的属性设定

2.3 进行屏幕适配:重写layoutSubviews方法或使用AutoLayout

3. 视图子类添加数据模型属性并重写setter方法将数据显示到子视图

如果子视图的数据固定可能不需要数据模型属性

xib设计视图:

1. 在Xib中设计一个视图,设计好视图中的子控件及其相关属性,并进行屏幕适配

2. 定义一个视图的子类,父类类型应当为Xib中设置的视图类的类型,并在xib中进行关联

3. 提供类方法创建视图对象,使用xib加载视图对象的方式

3. 视图子类添加数据模型属性并重写setter方法将数据显示到子视图

如果子视图的数据固定可能不需要数据模型属性

  • 控制器的使用

控制器作为视图与模型的桥梁,应答具有以下功能:

1. 管理视图对象

2. 管理模型对象(数组)

3. 实现关联的业务逻辑,如:子视图的创建、模型的赋值等

4. 处理各种复杂的业务逻辑,如:按钮被点击时的响应动作

控制器可分成如下几类:

视图控制器:作为一个页面的管理者

代理控制器:用来实现某些对象的数据源和代理方法

模型控制器:管理复杂的模型数据,包括获取、解析等功能

...

时间: 2024-08-05 07:23:04

iOS开发设计模式之MVC的相关文章

iOS开发>学无止境 - 使用MVC模式帮ViewController瘦身

随着程序逻辑复杂度的提高,你是否也发现了App中一些ViewController的代码行数急剧增多,达到了2,3千行,甚至更多.这时如果想再添加一点功能或者修改现有逻辑变得让人无比头疼.如果你遇到了这类问题,那是时候停下来了,思考一下如何更好地组织代码,给VC瘦身.本文将会阐述如何结合MVC的思想帮你的VC瘦身同时提高复用和可扩展性. 一.开发中常见的现象和缺点 iOS中最常见的一种设计模式就是MVC,但在实际开发过程中,我们因为这样.那样的原因让单纯的ViewController变成了集Mod

iOS常用设计模式:MVC、单例、代理、观察者。

MVC 模型-视图-控制器(MVC)设计模式 MVC根据角色划分类,涉及到三个角色: Model:模型保存应用程序的数据. View:视图是模型的可视化表示以及用户交互的控件. Controller:控制器是一个协调所有工作的中介者.它访问模型中的数据并在视图中展示它们,同时它们还监听事件和操作数据. 单例设计模式 单例设计模式可以确保对于一个类只有一个实例(对象)存在,这个对象有一个全局的访问点.通常采用懒加载的方式在第一次用到对象的时候才去创建它. 如何创建一个单例: 如:在SortDeta

iOS开发设计模式之代理

代理设计模式 代理设计模式,也称"委托",顾名思义就是委托别人去做事情 在代理模式中,一方称为委托方,另一方称为代理方. 委托方和代理方通过协议联系到一起. 当委托方想要让代理方做事情时只需向代理发送代理消息 代理的作用: 1)对象间传递事件 :孩子告诉妈妈饿了 2)对象间传递数值 :告诉妈妈饿了的同时告诉想吃什么 代理方法中使用参数 3)为自身的属性赋值 :孩子告诉妈妈饿了同时要得到妈妈做的食物 代理方法中使用返回值 代理设计模式的使用步骤 委托方:提出代理协议 @protocol 

iOS开发设计模式之单例设计模式

单例设计模式 是一种常用的软件设计模式,保证系统中的一个类只有一个实例而且该实例易于被外界访问. 单例的英文:singleton,在数学中的含义是:有且仅有一个元素的集合. 如果希望系统中某个类的对象只能存在一个,单例模式是最好的解决方案 优点: 可以阻止其他对象实例化对象的副本,从而确保所有对象都访问唯一实例 缺点: 单例对象一旦创建,对象指针保存在全局静态区,而单例对象在堆中分配内存空间,在应用程序终止后才会被释放 使用到单例设计模式的类:(大部分用于管理系统的资源) UIApplicati

学习IOS开发UI篇--MVC设计界面及数据的模型转换

1.字典转模型 ======================================== 1.1字典转模型的好处: 1> 降低代码的耦合度 2> 所有字典转模型部分的代码统一集中在一处处理,降低代码出错的几率 3> 在程序中直接使用模型的属性操作,提高编码效率 模型应该提供一个可以传入字典参数的构造方法 - (instancetype)initWithDict:(NSDictionary *)dict; + (instancetype)xxxWithDict:(NSDiction

iOS开发与设计模式 - MVC

iOS开发与设计模式 - MVC 最近在学习GoF的设计模式这本书,粗略的浏览了一遍,真是好书.好书就应该好好读,因此很有必要从实际的言语.项目理解设计模式. 我是做iOS开发的,自然就从这方面入手(脑). MVC iOS开发最基本的一个模式就是MVC, M指model,V指view,C指controller,有很多文章对它们是什么,它们的关系,它们如何交互进行了详细的说明,本文就不再展开说明了,仅放一张图供大家参考(来自斯坦福大学ios课程)  ViewController 是什么? 在iOS

iOS开发之理解iOS中的MVC设计模式

模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已广泛应用于用户交互应用程序中.在iOS开发中MVC的机制被使用的淋漓尽致,充分理解iOS的MVC模式,有助于我们程序的组织合理性. 模型对象模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算.例如,模型对象可能是表示游戏中的角色或地址簿中的联系人.用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达

iOS开发——MVC详解&Swift+OC

MVC 设计模式 这两天认真研究了一下MVC设计模式,在iOS开发中这个算是重点中的重点了,如果对MVC模式不理解或者说不会用,那么你iOS肯定学不好,或者写不出好的东西,当然本人目前也在学习中,不过既然能看到这篇文档,说明你已经开始着手学习并且想深入研究它了,个人也是研究很久才搞懂,就写下来希望对各位有用,也能方便自己以后开发中查看,好了废话不多说,下面就来详细介绍一下MVC,并且用实例验证一下在项目开发中怎么去使用它. 相信你对 MVC 设计模式 并不陌生,只是不能完全理解其中的含义或者不能

IOS开发常用设计模式

IOS开发常用设计模式 说起设计模式,感觉自己把握不了笔头,所以单拿出iOS开发中的几种常用设计模式谈一下. 单例模式(Singleton) 概念:整个应用或系统只能有该类的一个实例 在iOS开发我们经常碰到只需要某类一个实例的情况,最常见的莫过于对硬件参数的访问类,比如UIAccelerometer.这个类可以帮助我们获得硬件在各个方向轴上的加速度,但是我们仅仅需要它的一个实例就够了,再多,只会浪费内存. 所以苹果提供了一个UIAccelerometer的实例化方法+sharedAcceler