2015-06-20 75 views
23

的我刚刚更新了我的项目斯威夫特2斯威夫特2:OBJC_ASSOCIATION_RETAIN_NONATOMIC使用未解决的标识符

我我迅速类之一,我用ObjC关联。

我有以下几点:

objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC) 

由于更新,编译器返回Use of unresolved identifier 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'

任何想法为什么?


编辑: 对于那些谁有同样的问题,一个临时的解决办法将它的值,即更换不变。 1:objc_AssociationPolicy(rawValue: 1)

+0

[雨燕2.0重复OBJC的可能的复制\ _ASSOCIATION \ _RETAIN](http://stackoverflow.com/questions/30872626/swift-2-0-replicate-objc-association-retain) –

回答

41

如果你看一下obj的C运行时迅速头,看来这个结构已经成为一个枚举:

/** 
* 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一个typealias - 与铸造效应 'OBJC_ASSOCIATION_RETAIN_NONATOMIC',一个Int)

0

试试这个:

import ObjectiveC.runtime 

func setOverlay(view: UIView) 
{ 
    objc_setAssociatedObject(self, &AssociatedKeys.overlayKey, view, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 
}