Using Swift With Cocoa And OC - GaoZhenWei/SwiftLearning GitHub Wiki

1. OC中的宏定义是如何导入到Swift中的

Swift不支持宏定义,那么OC文件中定义的宏是如何转换到Swift中的呢?主要转化如下:

  • OC中使用#define定义的简单的宏,在Swift中变成了全局的let常量:
#define kSsqTrendGridWidth   24.5

被转化成了Swift的:

let kSsqTrendGridWidth = 24.5
  • OC中复杂的包含参数的宏定义__不能__被导入到Swift中:
#define kSsqHeaderLineColor [UIColor colorWithRed:0.84 green:0.80 blue:0.78 alpha:1.0]

对于这种情况,解决方案是:在Swift中定义成一个func来代替:

func kSsqHeaderLineColor() -> UIColor {
    return UIColor(red: 0.84, green: 0.80, blue: 0.78, alpha: 1.0)
}
  • Swift中使用let定义的常量,无法在OC中使用。解决方案是:只能在OC文件中重新定义成宏