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文件中)

     

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

  • 相关阅读:
    ubuntu安装jdk的两种方法
    LeetCode 606. Construct String from Binary Tree (建立一个二叉树的string)
    LeetCode 617. Merge Two Binary Tree (合并两个二叉树)
    LeetCode 476. Number Complement (数的补数)
    LeetCode 575. Distribute Candies (发糖果)
    LeetCode 461. Hamming Distance (汉明距离)
    LeetCode 405. Convert a Number to Hexadecimal (把一个数转化为16进制)
    LeetCode 594. Longest Harmonious Subsequence (最长的协调子序列)
    LeetCode 371. Sum of Two Integers (两数之和)
    LeetCode 342. Power of Four (4的次方)
  • 原文地址:https://www.cnblogs.com/aunty/p/5079923.html
Copyright © 2011-2022 走看看