zoukankan      html  css  js  c++  java
  • iOS 的 Delegate 设计模式 及 自定义代理

     

    设计模式./-->是一种手段,一种工具.可以使代码的写起来更方便
    1. 代理设计模式(委托设计模式)

     

    <1>. 监听器的场合

     

      对象B(保姆)想监听对象A(婴儿)的一些行为

     

    <2>. 通知的场合

     

      对象A(婴儿)发生了一些行为,想通知B(保姆)[B(保姆)为代理对象]

     

    <3>. 有些事情,不想自己处理,可以交给别人处理

     

      对象婴儿发生了一些事情,不想自己处理,交给保姆处理

     

    2. 代理设计模式的使用场合

     

      当对象A发生了一些行为,想告知对象B-->[让对象B成为对象A的代理对象]

     

      对象B想监听对象A的一些行为-->[让对象B成为对象A的代理对象]

     

      当对象A无法处理某些行为的时候,想让对象B帮忙处理-->[让对象B成为对象A的代理对象]

     

    iOS中的自定义代理模式

    自定义代理模式分为6步,遵循这6步,就能把代理完整的实现.

    1.定义协议(协议中存放代理的任务).我们对于有的自定义的布局视图,并不会带有协议,为了满足我们有时候的开发需求,需要添加代理.那么我们就要先定义一个协议.如下:在自定义视图的DelegateView.h文件中定义一个DelegateViewDelegate协议,协议默认的都是必须的实现的方法,可以根据需求来添加可选实现的方法.

     


    1.定义协议

     

     

    2.定义代理属性,用来存储代理对象.

     


    2.定义代理属性

     

    3.为DelegateView指定代理对象.(找个代理干活),例如:我们定义一个红色视图(要求点击时改变自身视图颜色),然后为它指定一个代理对象self(由于定义的视图在视图控制器中),当前的self就是视图控制器类.指定它为代理.有什么活让它干.

     


    3.指定代理对象

     

    4.代理类要服从协议.

     


    4.服从协议

     

    5.代理类实现协议中的方法.在这只实现了一个必须实现的方法,- (void)handleTouchBegan:(DelegateView *)aView;当开始点击红色视图时,改变它自身视图颜色.

     


    5.代理类实现协议中方法

     

    6.委托方通知代理来执行任务.委托方DelegateView通知代理(视图控制器)来执行这个任务.

     


    6委托方通知代理执行任务(这段代码在DelegateView.m文件中)

     

    代理的作用:完成委托方交给的任务,委托方有一些任务自己不想完成,但是还需要要实现,则将该任务存放到协议中,由代理完成.但是代理并不会主动的执行任务,需要委托方通知代理.

  • 相关阅读:
    2018 BAT最新 php面试必考题
    2018 BAT最新《前端必考面试题》
    BAT-Java必考面试题集
    BAT-Python面试题
    BAT大数据面试题
    特殊密码锁 的通过码是:(请注意,在openjudge上提交了程序并且通过以后,就可以下载到通过码。请注意看公告里关于编程作业的说明)
    OpenJudge百炼-2747-数字方格-C语言-枚举
    poj2814-拨钟问题-C语言-枚举算法
    中国MOOC_面向对象程序设计——Java语言_第4章 继承与多态_第4周编程题
    中国MOOC_面向对象程序设计——Java语言_第3周 对象容器_1查找里程
  • 原文地址:https://www.cnblogs.com/aunty/p/5079923.html
Copyright © 2011-2022 走看看