【问题标题】:Swift 2 - Convert objective-c #define to swiftSwift 2 - 将 Objective-c #define 转换为 swift
【发布时间】:2016-10-15 19:49:03
【问题描述】:

我正在尝试将 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);

如何快速将其转换为变量?

【问题讨论】:

标签: objective-c swift2 cgimage


【解决方案1】:

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

如果你想在 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 是不可见的。

【讨论】:

  • 非常感谢..最后我使用了objective c桥文件的功能...我会再次尝试转换它并让你知道
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多