SwiftからObjective-Cの#defineマクロを使う方法

Objective-CからSwiftに移行するときに困るのが#defineで定義されたマクロです。

Bridging-Headerでimportしても、定数の定義はそのまま使用できますが、メソッドの定義は使用できません。

Swiftで直接使用できないのなら、Objective-Cを介して使えば良いです。
マクロ呼び出し用のメソッドを持つクラスを作成して、そのメソッドを使えば簡単です。

t1プロジェクト

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 定数は使える
        print("DEFINE = %@", MSG_AAA)

        // メソッドは使えない
        //xLog("123")

        // マクロ呼び出し用クラスで使用
        Class1.aLog("ABC")
        Class1.aLog(MSG_AAA)
        
        // インスタンスメソッドでもOK
        let c1 = Class1()
        c1.bLog("999")
    }
    
}
#import "Header1.h"
#import "Class1.h"
#ifndef Header1_h
#define Header1_h

#define MSG_AAA  @"AAA"

#define xLog(msg) NSLog(@" xLog = [ %@ ]", msg)

#endif /* Header1_h */
@interface Class1 : NSObject

+ (void)aLog:(NSString*)message;
- (void)bLog:(NSString*)message;

@end
#import "Class1.h"
#import "Header1.h"

@implementation Class1

+ (void)aLog:(NSString*)message {
    NSLog(@"NSLog = [ %@ ]", message);
    xLog(message);
}

- (void)bLog:(NSString*)message {
    NSLog(@"NSLog = [ %@ ]", message);
    xLog(message);
}

@end