当前位置:  开发笔记 > IOS > 正文

使用NSHashTable在Swift 3中实现Observer模式

如何解决《使用NSHashTable在Swift3中实现Observer模式》经验,为你挑选了1个好方法。

添加多个代理而不是仅添加一个委托是一项非常常见的任务.假设我们有协议和类:

protocol ObserverProtocol
{
   ...
}

class BroadcasterClass
{
    // Error: Type 'ObserverProtocol' does not conform to protocol 'AnyObject'
    private var _observers = NSHashTable.weakObjects()
}

如果我们试图强制ObserverProtocol遵守AnyObject协议,我们将得到另一个错误:

不支持使用'ObserverProtocol'作为符合协议'AnyObject'的具体类型

甚至可以在Swift 3.0中创建一组弱委托吗?



1> Dave Weston..:

当然,这是可能的.

AnyObjectid目标C中的Swift等价物.要编译代码,只需要@objc在协议中添加注释,告诉Swift协议应该与Objective C兼容.

所以:

@objc protocol ObserverProtocol {

}

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有