2016-06-14 122 views
0

我試圖將project從objective-c轉換爲swift。我在轉換#define時遇到了一些問題。Swift 2 - 將objective-C#define轉換爲swift

我所擁有的是:

#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); 

我怎樣才能將它轉換爲變量迅速?

+0

你見過這個線程嗎? http://stackoverflow.com/questions/24325477/how-to-use-a-objective-c-define-from-swift –

+0

嗨,謝謝我已經看到了這一步,但我不明白爲什麼這個Objective-C宏爲'Mark8 '以及如何轉換它 – SNos

回答

0

4只#define在你的問題不是提供給斯威夫特,請參見在https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html

如果你想在斯威夫特提供其等效題爲複雜的宏,你將需要重新實現它們迅速。一個簡單的方法,假設宏參數是UInt32型的,因爲它是在你的榜樣,可能如下:

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

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

當然,你可以刪除swift部分並調用函數Mask8「R`等等,因爲它們的Objective-C等價物對Swift來說是不可見的。

+0

非常感謝。最後我使用了使用目標c橋文件的函數...我將再次嘗試轉換它並讓您知道 – SNos