Swift 2:OBJC_ASSOCIATION_RETAIN_NONATOMIC使用未解析的标识符

Mat*_*ler 23 swift swift2

我刚刚将我的项目更新为Swift 2.

我的一个快速课程我使用ObjC协会.

我有以下内容:

objc_AssociationPolicy( OBJC_ASSOCIATION_RETAIN_NONATOMIC)
Run Code Online (Sandbox Code Playgroud)

自更新以来,编译器返回Use of unresolved identifier 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'.

知道为什么吗?


编辑:对于那些有相同问题的人,临时修复就是将常量替换为其值即.1:objc_AssociationPolicy( rawValue: 1 )

jam*_*rez 44

如果查看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
}
Run Code Online (Sandbox Code Playgroud)

所以你可以用:替换objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC.

如果您需要将令牌作为UInt,则始终可以使用.rawValue.

(在之前的版本objc_AssociationPolicy中只是UInt的一个类型 - 具有转换'OBJC_ASSOCIATION_RETAIN_NONATOMIC',Int的效果)