我刚刚将我的项目更新为Swift 2.
我的一个快速课程我使用ObjC协会。
我有以下内容:
objc_AssociationPolicy( OBJC_ASSOCIATION_RETAIN_NONATOMIC)
自更新以来,编译器返回Use of unresolved identifier 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'
。
知道为什么吗?
编辑:
对于那些有相同问题的人来说,临时修复就是将常量替换为其值,即。 1:objc_AssociationPolicy( rawValue: 1 )
答案 0 :(得分:43)
如果查看obj c运行时swift头文件,看起来这个构造已成为一个枚举:
/**
* 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)的效果
答案 1 :(得分:0)
试试这个:
import ObjectiveC.runtime
func setOverlay(view: UIView)
{
objc_setAssociatedObject(self, &AssociatedKeys.overlayKey, view, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}