zoukankan      html  css  js  c++  java
  • IOS Delegate & protocal

    总结一下:

    delegate是一个方式,程序组成单元之间分工的一种协调思想

    protocal 这个东西不能单独说,要与它相关的两个主要东西一起说,一个是 委托者 通常是VIEW, 一个是被委托者 通常是某个CONTROLLER

    它主要用来预先定义出来一个协议,可以理解为TCP/IP协议的思想,大家即 服务端、客户端 都按这个TCP/IP的协议规范来 沟通。

    既然把它叫一个协议,那它一定有一个明确具体的定义,定义它有什么功能,即行为,或叫干什么事。

    这个所谓的干什么事,就是预先定义出来,给委托者调用(由被委托者实现,协议只是定义一个行为的名字和相应的参数及类型),定义也定义好了。

    下面就是,被委托者FOLLOW这个协议,然后实现它。委托者就可以设置自己的委托人是人,就是设置被委托人的引用到自己的DELEGATE属性上。

    anyController.delegate = self.  SELF这个类里去实现协议方法。

    那么委托者有了具体的委托人了,就可以有效的进行调用 这个协议里预先定义过的方法了。

    委托者在类定义的头文件中也需要声明好一个 DELEGATE的属性 (@PROPERTY ID<PROTOACALNAME> delegate 这种形式)。

    那这样一个有机的配合机制就出来了,这几者之间的一个明确的协调工作方式就完成了。

    即,VIEW & CONTROLLER 双方都遵守了 PROTOCAL协议,如同服务端 与 客户端都 遵循实现了 TCP/IP协议

    //-----------------------------------------------------------------------------------------------------------------Concolusion

    PROTOCAL 用来定义预期的行为 @protocal { -(void)method_name;} @end

    VIEW用来调用PROTOCAL定义的行为, 调用形式即 [view.delegate method_name_defined_in_protoal];

    CONTROLLER用来实现PROTOCAL定义的行为,且,CONTROLLER被设置为VIEW的DELEGATE。即传引用给CONTROLLER的DELEGATE属性。 view.delegate = self;

    会让整个程序模块功能之间的协作很清晰,它不是唯一的好方式,但确是一种好方式。

  • 相关阅读:
    JVM系列四:生产环境参数实例及分析【生产环境实例增加中】
    JVM系列三:JVM参数设置、分析
    JVM系列二:GC策略&内存申请、对象衰老
    JVM系列一:JVM内存组成及分配
    windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码
    微信小程序使用字体图标
    Jetson tx2 串口通信
    categorical[np.arange(n), y] = 1 IndexError: index 2 is out of bounds for axis 1 with size 2
    cannot import name '_imaging' 报错
    VS2015 opencv 无法打开文件“opencv_calib3d330d.lib”
  • 原文地址:https://www.cnblogs.com/killiancheung/p/4688719.html
Copyright © 2011-2022 走看看