zoukankan      html  css  js  c++  java
  • Cocoa Touch的3种类的交流方式delegate/target/notification

     

    1. Delegate

    在Cocoa Touch类对象运行的周期中,某一个时间点它会去调用一些指定类的指定函数来完成他自身所要完成的功能。这个”指定的类”,就称为这个类的委托类。”指定函数”则是一些在协议(protocal)中完定义的方法。

    比如UITableView,在它的运行周期中,它会调用委托类的一系列函数来完成对自身的初始化工作。我们需要做的,只是指定好它的委托类,并且在委托类中实现UITableView将要调用的委托方法。那我怎么知道UITableView要调用哪些方法呢?其实很简单,它所要调用的方法都定义在了协议类里面。在文档中可以找到,与UITableView相关的协议类的名字也都是以UITableView开头。其中定义的方法就是UITableView在运行周期中所要调用的一些方法。

    2. Target

    继承自UIControl的类,例如UIButton,可以设置当被触发某个事件时,去调用target对象的selector函数。

    [UIButton  addTarget: 目标对象名称  action:函数名称 forControlEvents:事件名称]  

     

    3. Notification

    这种方式允许某个对象向消息中心发送消息,这些消息可能标有一些状态信息。另外一些对象可能会在消息中心监听带有某些状态消息的信息,从而做出相应。

     

    NSNotification *ntf = [NSNotification notificationWithName:@"chgValue" object:self];  
    //声明一个消息,名称为chgValue,发送者是对象本身。  
    NSNotificationCenter *ntfCenter = [NSNotificationCenter defaultCenter];  
    [ntfCenter postNotification:ntf];  
    //获得消息中心的单例,将定义好的消息发送给消息中心。  
    NSNotificationCenter *ntfCenter = [NSNotificationCenter defaultCenter];  
    [ntfCenter addObserver:self selector:@selector(getNtf) name:@"chgValue" object:self];  
    [ntfCenter addObserver:self selector:@selector(getNtf2) name:@"chgValue" object:self];  
    //获得消息中心的单例,将来源是本对象,名称为chgValue的消息分发给本对象的getNtf和getNtf2函数。  
  • 相关阅读:
    写了一个单链表的代码,而且支持反转链表,分组反转链表
    【Redis】redis分布式锁(二)
    【Redis】redis分布式锁(一)
    【Flutter】跟着flutter教程学着写了一个简单的Demo
    【Zookeeper】Zookeeper集群环境搭建
    【TDengine】TDengine初探
    【Shell】一个可以服务拉起、停止和重启的shell脚本
    【Linux】xftp报“找不到匹配的outgoing encryption算法”的错误
    【Linux】Ubuntu如何开启ftp服务器
    【Jenkins】使用Jenkins编译打包后自动部署项目
  • 原文地址:https://www.cnblogs.com/killiancheung/p/4569695.html
Copyright © 2011-2022 走看看