2015-06-20 5 views
23

ich mein Projekt nur 2.Swift 2: OBJC_ASSOCIATION_RETAIN_NONATOMIC Verwendung von ungelöster Kennung

ich eine meiner schnellen Klasse Swift aktualisiert verwende ich ObjC Verein.

Ich habe folgendes:

objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC) 

Seit dem Update der Compiler gibt Use of unresolved identifier 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'.

Irgendeine Idee warum?


Edit: Für diejenigen, die das gleiche Problem haben, eine temporäre Lösung wäre es, die konstant mit seinem Wert, dh zu ersetzen. 1: objc_AssociationPolicy(rawValue: 1)

+0

Mögliches Duplikat [Swift 2.0 Replikation ObjC \ _ASSOCIATION \ _RETAIN] (http://stackoverflow.com/questions/30872626/swift-2-0-replicate-objc-association-retain) –

Antwort

41

Wenn Sie den Blick auf obj c Laufzeit schnellen Kopf, scheint es dieses Konstrukt eine Enumeration geworden ist:

/** 
* 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 
} 

So können Sie ersetzen mit: objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC.

Wenn Sie das Token als UInt benötigen, können Sie immer .rawValue verwenden.

(In der vorherige Version objc_AssociationPolicy war nur ein typealias für UInt - mit dem Effekt des Gießens 'OBJC_ASSOCIATION_RETAIN_NONATOMIC', ein Int)

0

Try this:

import ObjectiveC.runtime 

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