码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发设计模式之MVC

时间:2016-03-02 07:07:04      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:ios   app   xcode   设计模式   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. 处理各种复杂的业务逻辑,如:按钮被点击时的响应动作


控制器可分成如下几类:

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

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

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

    ...



本文出自 “teacherAn” 博客,请务必保留此出处http://annmeng.blog.51cto.com/3321237/1746499

iOS开发设计模式之MVC

标签:ios   app   xcode   设计模式   mvc   

原文地址:http://annmeng.blog.51cto.com/3321237/1746499

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!