プロジェクトをSwift 2に更新しました。
私は自分のSwiftクラスの1つで、ObjCアソシエーションを使用しています。
私は以下を持っています:
_objc_AssociationPolicy( OBJC_ASSOCIATION_RETAIN_NONATOMIC)
_
更新以降、コンパイラは_Use of unresolved identifier 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'
_を返します。
理由は何ですか?
編集:同じ問題を抱えている人のために、一時的な修正は定数をその値に置き換えることです。 1:objc_AssociationPolicy( rawValue: 1 )
Obj c runtime 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の単なるtypealiasでした-'OBJC_ASSOCIATION_RETAIN_NONATOMIC '、Intをキャストする効果があります)
これを試して:
import ObjectiveC.runtime
func setOverlay(view: UIView)
{
objc_setAssociatedObject(self, &AssociatedKeys.overlayKey, view, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}