微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在’pure’Swift中创建弱协议引用(w/o @objc)

弱引用似乎不工作在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 举报,一经查实,本站将立刻删除。

相关推荐