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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 2 - 将objective-c #define转换为swift相关的知识,希望对你有一定的参考价值。

我试图将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中将其转换为变量?

答案

您的问题中的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等价物无论如何都不可见。

以上是关于Swift 2 - 将objective-c #define转换为swift的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C & Swift 2.0 和“偏执”类

将 Swift 导入 Objective-C:未创建 Objective-C 标头“-Swift.h”

将 Swift 导入 Objective-C:未创建 Objective-C 标头“-Swift.h”

Swift 类使用 Objective-C 类使用 Swift 类

将swift文件导入objective-c项目

将 Swift 导入 Objective-C - “使用未声明的标识符”