swift 带有哈希表的多播代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 带有哈希表的多播代理相关的知识,希望对你有一定的参考价值。

class MulticastDelegate <T> {
  private let delegates: NSHashTable<AnyObject> = NSHashTable.weakObjects()
  
  func add(delegate: T) {
    delegates.add(delegate as AnyObject)
  }
  
  func remove(delegate: T) {
    for oneDelegate in delegates.allObjects.reversed() {
      if oneDelegate === delegate as AnyObject {
        delegates.remove(oneDelegate)
      }
    }
  }
  
  func invoke(invocation: (T) -> ()) {
    for delegate in delegates.allObjects.reversed() {
      invocation(delegate as! T)
    }
  }
}

func += <T: AnyObject> (left: MulticastDelegate<T>, right: T) {
  left.add(delegate: right)
}

func -= <T: AnyObject> (left: MulticastDelegate<T>, right: T) {
  left.remove(delegate: right)
}

以上是关于swift 带有哈希表的多播代理的主要内容,如果未能解决你的问题,请参考以下文章

markdown vLans的多播代理

如何在swift中实现多播套接字?

Swift:带有完成处理程序的多线程

如何进行推送通知的多播?

iOS 14 上的多播网络授权

Aeron - 跨交换机的多播问题