星空网 > 软件开发 > 操作系统

swift中使用GCDMulticastDelegate

在开源库XMPPFramework中提供了一个GCDMulticastDelegate类,使用它可以为一个对象添加多个被委托的对象,以前用oc编写的工程引入了这个类,使用起来十分方便。最近由于换了工作,新项目需要用swift来实现。我也想把这个对象引入到工程中。仔细研究了一下,终于可以实现了。

1.导入GCDMulticastDelegate类,在桥接文件中加入:#import "GCDMulticastDelegate.h"

2.建立一个swift的代理文件,文件体如下

@objc protocol MyDelegate {

    optional func test()

}

注意的是,这里的代理函数一定要声明为optional的

3.建立一个新的swift文件,命名为MyMulticastDelegate,文件体如下

import UIKit

class MyMulticastDelegate: GCDMulticastDelegate,MyDelegate {}

表示新类是继承了GCDMulticastDelegate,并实现了MyDelegate

4.在需要使用multiDelegate发test消息的类中,定义一个实例变量:

var multiDelegate:MyMulticastDelegate

在类的初使化函数里实例化:

multiDelegate = MyMulticastDelegate()

并在类中定义两个如下函数:

func addMultiDelegate(delegate:MyDelegate, delegateQueue:dispatch_queue_t){

   multiDelegate?.addDelegate(delegate, delegateQueue: delegateQueue)

}

func removeMultiDelegate(delegate:MyDelegate){

       multiDelegate?.removeDelegate(delegate)

}

需要发消息时,如下调用:

 if let tempMultiDelegate:MyDelegate = self.multiDelegate{

   tempMultiDelegate.test!()

}

注意这里的消息函数后面是!,目的是强制调用GCDMulticastDelegate里面的forwardInvocation函数。如里写成?消息监听者会收不到消息

5.需要接收test()消息的对象以self为参数调用addMultiDelegate

 

(本人是新接触swift,如果有更好的方法,欢迎留言给我)

 




原标题:swift中使用GCDMulticastDelegate

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊等跨境电商平台如何运营?养买家号有哪些好处和方法?:https://www.kjdsnews.com/a/1447234.html
领英开发客户9大技巧,外贸新人用领英怎么找客户?:https://www.kjdsnews.com/a/1447235.html
短视频营销案例解析!:https://www.kjdsnews.com/a/1447236.html
小成本,自己创业干点什么好(自养号测评技术):https://www.kjdsnews.com/a/1447237.html
亚马逊打造爆款必看!如何做好前期的选品调研?:https://www.kjdsnews.com/a/1447238.html
离岸公司架构对跨境电商企业发展的作用和意义:https://www.kjdsnews.com/a/1448211.html
仿品独立站从建站、推广、收款到底怎么玩?:https://www.kjdsnews.com/a/1836312.html
仿品独立站从建站、推广、收款到底怎么玩?:https://www.goluckyvip.com/news/186215.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流