我发现如果我创建了这样一个协议:
protocol MyProtocol { }
我无法做到这一点:
weak var myVar: MyProtocol?
我找到了解决这个问题的方法,就是在协议声明中添加@objc
:
@objc protocol MyProtocol { }
但是为什么这样可以修复错误呢?
我猜测添加@objc
可以避免结构体符合协议,因此变量的值保证是引用类型。我猜对了吗?
此外,添加@objc
也会阻止我添加像[String: Any]
这样的Swift类型。我还想知道是否有其他方法来修复这个错误。
@objc
类所采用,但现在请不要问我具体的区别 :) - Martin R