• protocol代理设计模式


    1:前提必须掌握的知识
           
       ARC下的@property参数
    
       strong : 用于OC对象, 相当于MRC中的retain
       weak   : 用于OC对象, 相当于MRC中的assign
       assign : 用于基本数据类型, 跟MRC中的assign一样
       copy   : 一般用于NSString, 跟MRC中的copy一样 在ARC情况下解决”循环retain”的问题:@property一边用strong,一边用weak。
     
    2:protocol代理设计模式引入
     
      代理模式是在oc中经常遇到的一种设计模式,那什么叫做代理模式呢
    ?

      举个例子:有一个婴儿,他本身不会自己吃饭和洗澡等等一些事情,于是婴儿就请了一个保姆,于是婴儿和保姆之间商定了一个协议, 协议中写明了保姆需要做什么事情,   而保姆就是这个代理人, 即:婴儿和保姆之间有个协议,保姆遵守该协议,于是保姆就需要实现该协议中的条款成为代理人。
    3:代码实现:婴儿一要吃东西或者睡觉,保姆执行相应动作照顾婴儿
     
      lookBabyProtocol.h   :定义一个协议,里面声明代理类需要实现的方法列表, 比如这里一个代理类需要实现feedBaby与HongSleep方法

       

      Baby.h     :在需要代理的类中(Baby),定义一个对象类型为id且遵守代理协议的成员变量

      

       Baby.m

      

      BaoMu.h   :创建一个代理类(比如BaoMu),遵守上面的代理协议 

      

      BaoMu.m

      

      main.m       :main.m或其他使用Baby类的文件中,为Baby类的成员变量(代理类)赋值

      

    4:过程分析

        

       这个例子中baby想吃就通知代理(baby.m中定义的方法),然后代理就给baby吃。
    
        baby 一想吃,保姆就给他吃, 相当于baby一想吃,就调用保姆的方法,相当于保姆监听baby的一举一动
    
    
    
      这个例子可不可以理解成: 
    
    * 当对象baby发生了一些行为,想告知对象baomu (让对象B成为对象A的代理对象)
    
    * 对象baomu想监听对象baby的一些行为 (让对象B成为对象A的代理对象)
    
    * 当对象baby无法处理某些行为的时候,想让对象baomu帮忙处理 (让对象B成为对象A的代理对象)  
    5:protocol代理设计模式
    
        1> protocol代理设计模式概念
    
        代理模式概念:传入的对象,代替当前类完成了某个功能,称为代理模式
        利用协议实现代理模式的主要思路为: 
    
        1)定义一个协议,里面声明代理类需要实现的方法列表, 比如这里一个代理类需要实现feedBaby与HongSleep方法
    
        2)创建一个代理类(比如BaoMu),遵守上面的代理协议 
    
        3)在需要代理的类中(Baby),定义一个对象类型为id且遵守代理协议的成员变量 
    
        4)在Baby类中调用成员变量_delegate(代理)的方法,调用代理类的方法
    
        5)main.m或其他使用Baby类的文件中,为Baby类的成员变量(代理类)赋值
    
         
        2> protocol代理模式应用场合
    
        * 当对象A发生了一些行为,想告知对象B (让对象B成为对象A的代理对象)
    
        * 对象B想监听对象A的一些行为 (让对象B成为对象A的代理对象)
        
        * 当对象A无法处理某些行为的时候,想让对象B帮忙处理 (让对象B成为对象A的代理对象)
    
        1)监听器的场合
    
           * baomu想监听Baby的一些行为
    
        2)通知的场合
    
           * Baby发生了一些行为,想告知baomu
    
        3)有些事情,不想自己处理,想交给别人处理
    
           * Baby发生了一些行为, 但是自己不会处理, 可以交给baobu处理
    
    
  • 相关阅读:
    申通完美支撑“双11”——亿级包裹背后的云基础设施
    你不知道的云服务器付费新模式,省钱就靠它了
    从“虚拟化”到“新基建”,云计算如何继续乘风破浪?
    Alibaba Cloud Linux 2 LTS 快速启动优化实践
    Alibaba Cloud Linux 2 LTS 正式发布,提供更高性能和更多保障!
    连续四年,神龙又扛住了“双11”
    飞天丨想象没有边界,创造改变未来
    清华大学高琪瑞:基于云端视觉计算建设全球先进的工科实验教学平台
    映客高级技术总监黄继:7天从开发到上线,云上高效运维实践与探索
    三维家如何借助云变革家居行业
  • 原文地址:https://www.cnblogs.com/kongweiiwei/p/4619414.html
Copyright © 2020-2023  润新知