Bridging-Header.h,選 Yes。ProductModuleName-Swift.h)。

| 方向 | 操作 |
|---|---|
| Swift → OC | 在 Bridging-Header.h 中 #import "OCClass.h" |
| OC → Swift | 在 OC 檔中 #import "ProductModuleName-Swift.h" |
ProductModuleName-Swift.h 由 Xcode 自動生成,包含所有 @objc 標記的 Swift 類/成員介面。
Swift 無預處理器,建議改為 static inline 函式或 const 變數。
例:#define MView @\"MView\" 與 Swift `class MView` 同名。
解決:重命名巨集或 Swift 類,避免在 #import "ProductModuleName-Swift.h" 後產生重複定義錯誤。
EnumType.value。.rawValue 或 .value(視定義)。@objc。Int。NSObject 或標記 @objc。@objc。dynamic。@IBOutlet var labels: [UILabel]! // Swift 陣列替代 IBOutletCollection
注意:連接順序不保證為視覺順序。
OC 檔需 #import "ProductModuleName-Swift.h",而 Bridging Header 已 #import 該 OC 檔。
解決:在 OC .m 實作檔 中匯入 Swift 標頭,並將公開屬性型別改為 id,使用時再強轉:
// ViewController.h
@property (nonatomic, strong) id mData; // 不用 MData*
// ViewController.m
#import "ProductModuleName-Swift.h"
- (void)useData {
if ([self.mData isKindOfClass:[MData class]]) {
MData *data = (MData *)self.mData;
}
}
var → let(不可變優先)。println → print。do-while → repeat-while。將 OC 與 Swift 代碼分別封裝為獨立 Framework,再由主專案引用,隔離編譯依賴,加速增量建構。