你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> swift中使用GCDMulticastDelegate

swift中使用GCDMulticastDelegate

編輯:IOS技巧綜合
[摘要]本文是對swift中使用GCDMulticastDelegate的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

在開源庫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

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved