Swift 2 - 将 objective-c #define 转换为 swift

Swift 2 - Convert objective-c #define to swift

我正在尝试将 project 从 objective-c 转换为 swift。我在 swift.

上转换 #define 时遇到一些问题

我有的是:

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

如何将其转换为 swift 中的变量?

您问题中的 4 个 #define 不适用于 Swift,请参阅 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html

中标题为复杂宏的部分

如果您想在 Swift 中使用它们的等效项,您将需要 re-implement 在 Swift 中使用它们。一个简单的方法,假设宏参数是 UInt32 类型,就像在您的示例中一样,可能如下所示:

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

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

当然,您可以删除 swift 部分,只调用函数 Mask8、'R` 等,因为它们的 Objective-C 等价物对 Swift 无论如何。