美文网首页
Swift弱引用,消息分发工具

Swift弱引用,消息分发工具

作者: Nonmfly | 来源:发表于2021-01-14 15:01 被阅读0次

```

@objc protocol MD_DispatcherCenterDelegate: NSObjectProtocol {

    funcactionTestDispatch(test1:Int, test2:Int)

}

```

```

class MD_DispatcherCenter: NSObject {

    /// 保证sharedInstance是一个常量,在创建之后不会被更改 (单例 支持懒加载, 线程安全)

    static let shared = MD_DispatcherCenter()

    /// 存放observer的集合

    let observerTargets:NSHashTable = NSHashTable<AnyObject>.weakObjects()

    /// 保证init方法在外部不会被调用

    private override init() {}

    /// 增加Observer

/// - Parameter oberver: AnyObject

    func addObserver(oberver:AnyObject) {

        if !observerTargets.contains(oberver)  {

            observerTargets.add(oberver)

        }

    }

    /// 移除Observer

/// - Parameter oberver: AnyObject

    func removerObserver(oberver:AnyObject) {

        if observerTargets.contains(oberver) {

            observerTargets.remove(oberver)

        }

    }

    /// 判断是否是自己的observer

/// - Parameter oberver: AnyObject

/// - Returns: Bool

    func isObserver(oberver:AnyObject) ->Bool{

        if observerTargets.contains(oberver) {

            return true

        }

        return false

    }

    func testDispatch(){

        for object in observerTargets.allObjects{

            if let delegate = object as? MD_DispatcherCenterDelegate{

                delegate.actionTestDispatch(test1:0, test2:1)

            }

        }

    }

}

```

相关文章

网友评论

      本文标题:Swift弱引用,消息分发工具

      本文链接:https://www.haomeiwen.com/subject/vgjvaktx.html