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

问题描述 投票:0回答:1

我试图将project从objective-c转换为swift。我在转换#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);

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

objective-c swift2 cgimage
1个回答
1
投票

您的问题中的4个#defines不适用于Swift,请参阅https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html上标题为Complex Macros的部分

如果你想在Swift中使用它们的等价物,你需要在Swift中重新实现它们。一个简单的方法,假设宏参数的类型为UInt32,就像在您的示例中一样,可能如下所示:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.