zoukankan      html  css  js  c++  java
  • 学习IOS开发UI篇--MVC设计界面及数据的模型转换

    1.字典转模型

    ========================================

    1.1字典转模型的好处:

    1> 降低代码的耦合度

    2> 所有字典转模型部分的代码统一集中在一处处理,降低代码出错的几率

    3> 在程序中直接使用模型的属性操作,提高编码效率

    模型应该提供一个可以传入字典参数的构造方法

    - (instancetype)initWithDict:(NSDictionary *)dict;

    + (instancetype)xxxWithDict:(NSDictionary *)dict;

    1.2instancetype & id

    1> instancetype在类型表示上,跟id一样,可以表示任何对象类型

    2> instancetype只能用在返回值类型上,不能像id一样用在参数类型上

    3> instancetypeid多一个好处:编译器会检测instancetype的真实类型

    1.3 在模型中添加readonly属性

    // 定义属性时,会生成getter&setter方法,还会生成一个带下划线的成员变量

    // 而如果是readonly属性,则只会生成getter方法,同时没有成员变量

    @property (nonatomic, strong, readonly) UIImage *image;

    @interface LFAppInfo()

    {

        UIImage *_imageABC;

    }

    - (UIImage *)image

    {

        if (!_imageABC) {

            _imageABC = [UIImage imageNamed:self.icon];

        }

        return _imageABC;

    }

    在模型中合理地使用只读属性,可以进一步降低代码的耦合度。

    1.4使用数据模型的好处:

    *** 调用方不用关心模型内部的任何处理细节!

    1.5数据模型的创建

    1>创建类用来保存plsit文件中的数据

    2>设置类的属性(要与plist中的名称一一对应,设计KVC)

     添加UIimage类的成员变量,设置只读属性,在实现中利用私有类扩展添加_image属性,并添加getter方法.

    3>写构造方法和工厂方法

     [self setValueForKeysWithDict:dict]; (KVC)

    4>添加返回类对象数组的类方法

    + (NSArray *)info;

    2. XIB

    ========================================

    Xib文件可以用来描述某一块局部的UI界面

    XIB & Storyboard

    相同点:

    1都用来描述软件界面

    2都用Interface Builder工具来编辑

    不同点

    1>  Xib是轻量级的,用来描述局部的UI界面

    2>  Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

    3. View的封装思路

    ========================================

    1如果一个view内部的子控件比较多,一般会考虑自定义一个view,把它内部子控件的创建屏蔽起来,不让外界关心

    2外界可以传入对应的模型数据给viewview拿到模型数据后给内部的子控件设置对应的数据

  • 相关阅读:
    使用shutdown命令实现局域网内远程关机、重启整蛊他人
    在foxmail和outlook中设置QQ邮箱、gmail邮箱、新浪邮箱、微软邮箱、网易邮箱等的方法
    万能驱动助理篡改主页为2345的解决办法
    巧用UserAgent来解决浏览器的各种问题
    各大浏览器保存密码的文件
    使用代理软件之后其他软件不能联网的解决方法
    windows xp/7/8/8.1/10安全模式详解和系统修复讲解
    VirtualBox更改默认路径
    Virtualbox中不能为虚拟机打开一个新任务的原因及解决方法
    xampp打开显示缺少运行库的解决方法
  • 原文地址:https://www.cnblogs.com/zhaoyan/p/3746489.html
Copyright © 2011-2022 走看看