弱引用似乎不工作在Swift除非协议被声明为@objc,我不想在纯Swift应用程序。
这个代码给出一个编译错误(weak不能应用于非类类型MyClassDelegate):
class MyClass { weak var delegate: MyClassDelegate? } protocol MyClassDelegate { }
我需要用@objc作为协议的前缀,然后它工作。
问题:什么是“纯粹的”Swift的方式来完成一个弱委托?
您需要将协议的类型声明为类。
protocol ProtocolNameDelegate: class { // Protocol stuff goes here } class SomeClass { weak var delegate: ProtocolNameDelegate? }
我的理解是,使用类,你保证这个协议将只使用类,没有其他的东西,如枚举或结构。
原文地址:https://www.jb51.cc/swift/322119.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。