objc_getAssociatedObject
收益
nil
如果没有关联对象
到
NSDate
然后是强制演员
as! Bool
崩溃。
(如果设置了关联对象,它也会崩溃,但其
值不能转换为
Bool
.)
您可以将属性设置为可选:
var removed: Bool? {
get {
return objc_getAssociatedObject(self, &RemovalInformation.removed) as? Bool
}
set(newValue) {
objc_setAssociatedObject(self, &RemovalInformation.removed, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
}
}
或提供默认值,例如使用nil合并运算符
??
:
var removed: Bool {
get {
return objc_getAssociatedObject(self, &RemovalInformation.removed) as? Bool ?? false
}
set(newValue) {
objc_setAssociatedObject(self, &RemovalInformation.removed, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
}
}
请注意
&RemovalInformation.removed
仅用作内存地址
唯一标识关联对象。内容
静态属性及其类型无关,根本不使用。特别是,对象关联没有用该属性的值“初始化”。