如何解决属性类型“MyViewModel”与其包装类型的“wrappedValue”属性不匹配
我有一个属性包装器来避免处理隐式解包的选项。
它很好用,除非我尝试使用自定义包装器来处理弱属性:
@propertyWrapper
public struct WeakMaybeUninitialized<T: AnyObject> {
private weak var storage: AnyObject?
public var wrappedValue: T
{
get { return storage as! T }
set { storage = newValue }
}
public init(storage: T? = nil) {
self.storage = storage
}
public init() {}
}
假设我有以下协议:
protocol ViewModel: AnyObject {}
现在看起来像这样:
weak var viewModel: MyViewModel!
但是当我使用属性包装器时:
@WeakMaybeUninitialized var viewModel: MyViewModel
它返回错误“属性类型‘MyViewModel 与其包装类型‘WeakMaybeUninitialized’的‘wrappedValue’属性不匹配”
即使 MyViewModel 实际上符合 AnyObject,所以我不明白会发生什么。
你知道为什么吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。