2015-06-20 36 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) 
}