oc中的设计模式

来源:互联网 发布:python处理json字符串 编辑:程序博客网 时间:2024/05/19 18:15

oc中的设计模式有

  • 首先单例模式:在程序运行过程中初始化,并且单例的初始化只执行一次,其生命周期为单例对象初始化开始到程序结束。其初始化放法有2种如下图
    这里写图片描述
    系统中常见的单例有
//沙盒初始化NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];//通知初始化[NSNotificationCenter defaultCenter];
  • KVC(键值编码 key value coding)其主要作用是将字符串与model对应起来,可以将json字符串转换成model其使用的方法如下图:
    这里写图片描述
    如果有一个对象book是另外一个对象person的属性的时候,为book中的一个属性name赋值。
    这里写图片描述

  • KVO(观察者模式)这个模式是对某一变量进行监听,当事件发生的时候调用对用的时间处理方法,对事件进行处理,在处理结束后需要在dealloc 方法中进行移除。kvo模式下一般分为3步:

    1. 注册监听器
    2. 实现监听事件
    3. 移除监听
      对应代码如下:注册监听
      这里写图片描述
      事件处理
      这里写图片描述
      移除监听
      这里写图片描述
  • 发送通知(NSNotificationCenter)发送通知与KVO模式唯一的不同就是在于(NSNotificationCenter)需要发送通知。其实现流程为:
    注册监听
    这里写图片描述
    发送消息
    这里写图片描述
    处理消息事件
    这里写图片描述
    移除监听
    这里写图片描述

  • 委托(代理)模式:该模式与发送消息类似,只是代理一般用于上下2层之间的通信,而通知则不限于附近的2层,其可以跨越多层完成消息的传播完成通信,关键字为:@protocol ,@required 必须实现@optional选择实现
    下面是代理的流程:
    这里写图片描述

    v1与v2 签订协议
    v1
    这里写图片描述
    v2
    这里写图片描述
    这里的delegate使用leassign修饰,避免循环引用
    v1委托V2做代码 ,v2 开始做
    这里写图片描述
    v2调用方法处理
    这里写图片描述
    v2处理结束 告知v1 已经处理结束
    这里写图片描述
    v1得知v2的完成消息后做出相应的处理
    这里写图片描述

  • 还有就是有一个[NSUserDefaults standardUserDefaults] (沙盒)可以储存数据量不是很大的数据,比如可以存放登陆用户的名字密码等等。

最后如果此处有什么模式漏掉了,请各位大牛指出,共同学习,共同进步,谢谢大牛些了。

0 0
原创粉丝点击