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个#define
s不适用于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”