【发布时间】:2021-09-01 19:45:26
【问题描述】:
我有以下扩展,用于自动保存/检索 UIImageView 独有的运行时属性:
import UIKit
var imgAttributeKey:String? = nil
extension UIImageView {
var imgAttribute: String? {
get { return objc_getAssociatedObject(self, &imgAttributeKey) as? String }
set { objc_setAssociatedObject(self, &imgAttributeKey, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN) }
}
}
这工作正常,但最近再次尝试代码后,getter 总是返回 nil。 Swift 5 版本中是否发生了可能破坏此实现的更改?有什么建议吗?
【问题讨论】:
-
能否在setter上设置断点,检查XIB解码过程中是否被系统调用?
-
不,没有调用 setter。
-
您可以尝试在此声明前添加
@objc吗?@objc var imgAttribute: String? -
我得到一个'objc 只能与类成员、@objc 协议和类的具体扩展一起使用'的错误。
-
你使用的是什么版本的 Xcode?span>
标签: swift extension-methods xib swift5