all

如何在“纯”Swift 中进行弱协议引用(没有@objc)

发布于 2022-03-22 23:04:18

weak引用似乎在 Swift 中不起作用,除非 aprotocol被声明为@objc,这是我在纯 Swift 应用程序中不想要的。

此代码给出编译错误(weak不能应用于非类类型MyClassDelegate):

class MyClass {
  weak var delegate: MyClassDelegate?
}

protocol MyClassDelegate {
}

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

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

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

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

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

    使用AnyObject你说只有类可以符合这个协议,而结构或枚举不能。



知识点
面圈网VIP题库

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

去下载看看