【Swift】PrefixHeader.pch で定義された内容を swift で使う
古いアプリをリプレイするために少し調べています
ベースは Swift で作ってどうしても難しいところは Object-c のソースを呼び出す形にしたいと思っています
私は Xcode の開発に関しては初心者なので調べたことを残しています。
環境について
Xcode 15.3 Build version 15E204a
作業目的
SwiftでもObjective-Cでも同じ定数を使う。デバックログはマクロではできないので違う形になるかと思う
前の記事でPrefixHeader.pchが使えてdefineの定義されているものが使えるようになった
その内容を今度はSwiftで使うようにしたい
前提
Swift は Objective-C とは異なり、プレフィックスヘッダ (PrefixHeader.pch) を直接サポートしていません。プレフィックスヘッダは、特定のヘッダをプロジェクトの全ソースファイルで自動的にインポートする Objective-C の機能でしたが、Swift ではこのような機能は提供されていません。
対応方法
ブリッジングヘッダの使用: Objective-C のコードを Swift ファイルからアクセス可能にするために、Swift ではブリッジングヘッダ ({ProjectName}-Bridging-Header.h) を使用します。Objective-C のヘッダをブリッジングヘッダにインポートすることで、Swift からそれらを利用できるようになります。
ブリッジングヘッダの作成
({ProjectName}-Bridging-Header.hを新規作成して以下のようなプログラムを書きます importは前回つくったDefienファイルになります
// // inapppurchasetest-Bridging-Header.h // inapppurchasetest // // Created by masalib on 2024/03/16. // #ifndef inapppurchasetest_Bridging_Header_h #define inapppurchasetest_Bridging_Header_h #import "CommonDefine.h" #endif /* inapppurchasetest_Bridging_Header_h */
対象 TARGET の Bulid Settings の Objective-C Bridging Header で上記ファイルのパスを指定する。

$(SRCROOT)/$(PROJECT)/$(SWIFT_MODULE_NAME)-Bridging-Header.h
と設定する。
Swiftで使う
ソースでは何も指定することなくDefine.hで指定されている内容が使える
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("test")
print(MAX_HISTORIES)
// Do any additional setup after loading the view.
}
}