2016-06-14 16 views
0

Ich versuche eine project von Ziel-C zu Swift zu konvertieren. Ich habe einige Probleme beim Konvertieren von #define über swift.Swift 2 - Objective-C#define in swift konvertieren

, was ich habe ist:

#define Mask8(x) ((x) & 0xFF) 
    #define R(x) (Mask8(x)) 
    #define G(x) (Mask8(x >> 8)) 
    #define B(x) (Mask8(x >> 16)) 

UInt32 color = *currentPixel; 
     printf("%3.0f ", (R(color)+G(color)+B(color))/3.0); 

Wie kann ich dies in geschickter zu Variable umwandeln?

+0

Kennen Sie diesen Thread? http://StackOverflow.com/Questions/24325477/How-to-use-a-Objective-c-define-from-Switch –

+0

Hallo Dank Ich habe diesen Schritt gesehen, aber ich kann nicht verstehen, warum dieses Ziel-C-Makro als 'Mark8 'und wie man es konvertiert – SNos

Antwort

0

Die 4 #define s in Ihrer Frage nicht zu Swift zur Verfügung gestellt, finden Sie im Abschnitt bei https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html komplexe Makros Titel

Wenn Sie ihre Entsprechungen in Swift haben wollen, müssen Sie neu implementieren sie in Schnell. Ein einfacher Ansatz, der Makroparameter unter der Annahme des Typs UInt32 wie in Ihrem Beispiel ist, könnte wie folgt aussehen:

func swiftMask8(x:UInt32) -> UInt32 
{ 
    return x & 0xFF 
} 

func swiftR(x:UInt32)->UInt32 
{ 
    return swiftMask8(x) 
} 
... 

Natürlich können Sie den swift Teil fallen und nur die Funktionen Mask8 nennen, ‚R` usw., da ihre Objective-C-Äquivalente für Swift sowieso nicht sichtbar sind.

+0

Vielen Dank .. Am Ende habe ich die Funktion mit objektiven c Bridge-Datei verwendet ... Ich werde wieder versuchen, es zu konvertieren und lassen Sie es wissen – SNos