如何在“纯” Swift中创建弱协议引用(不带@objc)

发布于 2021-01-31 23:53:35

weak除非a protocol声明为@objc,否则引用似乎在Swift中不起作用,我不希望在纯Swift应用程序中使用它。

这段代码给出了一个编译错误(weak不能应用于非类类型MyClassDelegate):

class MyClass {
  weak var delegate: MyClassDelegate?
}

protocol MyClassDelegate {
}

我需要给协议加上前缀@objc,然后它才能工作。

问题:什么是完成Swift的“纯” Swift方法weak delegate

关注者
0
被浏览
90
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    您需要将协议类型声明为AnyObject

    protocol ProtocolNameDelegate: AnyObject {
        // Protocol stuff goes here
    }
    
    class SomeClass {
        weak var delegate: ProtocolNameDelegate?
    }
    

    AnyObject你的话说,只有类才能符合此协议,而结构或枚举则不能。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看