Swift 2 : OBJC_ASSOCIATION_RETAIN_NONATOMIC 使用未解析的标识符
Swift 2 : OBJC_ASSOCIATION_RETAIN_NONATOMIC use of unresolved identifier
我刚刚将我的项目更新为 Swift 2.
我是我的 swift class 我使用 ObjC 关联。
我有以下内容:
objc_AssociationPolicy( OBJC_ASSOCIATION_RETAIN_NONATOMIC)
自更新以来,编译returnsUse of unresolved identifier 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'
。
知道为什么吗?
编辑:
对于那些有同样问题的人,一个临时的解决办法是用它的值替换常量,即。 1 : objc_AssociationPolicy( rawValue: 1 )
如果您查看 obj c 运行时 swift header,似乎此构造已成为一个枚举:
/**
* Policies related to associative references.
* These are options to objc_setAssociatedObject()
*/
enum objc_AssociationPolicy : UInt {
case OBJC_ASSOCIATION_ASSIGN
case OBJC_ASSOCIATION_RETAIN_NONATOMIC
case OBJC_ASSOCIATION_COPY_NONATOMIC
case OBJC_ASSOCIATION_RETAIN
case OBJC_ASSOCIATION_COPY
}
因此您可以替换为:objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC
。
如果您需要作为 UInt 的令牌,您始终可以使用 .rawValue。
(在以前的版本中 objc_AssociationPolicy
只是 UInt 的类型别名 - 具有强制转换 'OBJC_ASSOCIATION_RETAIN_NONATOMIC',一个 Int 的效果)
试试这个:
import ObjectiveC.runtime
func setOverlay(view: UIView)
{
objc_setAssociatedObject(self, &AssociatedKeys.overlayKey, view, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
我刚刚将我的项目更新为 Swift 2.
我是我的 swift class 我使用 ObjC 关联。
我有以下内容:
objc_AssociationPolicy( OBJC_ASSOCIATION_RETAIN_NONATOMIC)
自更新以来,编译returnsUse of unresolved identifier 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'
。
知道为什么吗?
编辑:
对于那些有同样问题的人,一个临时的解决办法是用它的值替换常量,即。 1 : objc_AssociationPolicy( rawValue: 1 )
如果您查看 obj c 运行时 swift header,似乎此构造已成为一个枚举:
/**
* Policies related to associative references.
* These are options to objc_setAssociatedObject()
*/
enum objc_AssociationPolicy : UInt {
case OBJC_ASSOCIATION_ASSIGN
case OBJC_ASSOCIATION_RETAIN_NONATOMIC
case OBJC_ASSOCIATION_COPY_NONATOMIC
case OBJC_ASSOCIATION_RETAIN
case OBJC_ASSOCIATION_COPY
}
因此您可以替换为:objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC
。
如果您需要作为 UInt 的令牌,您始终可以使用 .rawValue。
(在以前的版本中 objc_AssociationPolicy
只是 UInt 的类型别名 - 具有强制转换 'OBJC_ASSOCIATION_RETAIN_NONATOMIC',一个 Int 的效果)
试试这个:
import ObjectiveC.runtime
func setOverlay(view: UIView)
{
objc_setAssociatedObject(self, &AssociatedKeys.overlayKey, view, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}