在 Objective-C 專案中使用 Swift 類別,需經過 Bridging Header 橋接與 Generated Header 導入兩個關鍵步驟。
File → New → File → Swift File,命名如 SwiftTest.swift。YourProject-Bridging-Header.h。NSObject 並標記 @objc 或 public):import Foundation
@objc public class SwiftTest: NSObject {
@objc func test() -> NSString {
return "Hello from Swift!"
}
}
YourProject-Swift.h(含 Swift 介面的 Objective-C 宣告)。// ViewController.m
#import "ViewController.h"
#import "YourProject-Swift.h" // 專案名-Swift.h
- (void)viewDidLoad {
[super viewDidLoad];
SwiftTest *obj = [[SwiftTest alloc] init];
NSString *result = [obj test];
NSLog(@"%@", result); // 輸出: Hello from Swift!
}
| 項目 | 說明 |
|---|---|
| Swift 類別 | 必須繼承 NSObject,方法/屬性加 @objc 或 public |
| Bridging Header | 用於 Swift 端引用 Objective-C 頭檔,不需手動 import Swift 檔 |
| Generated Header | ProductModuleName-Swift.h,必須先編譯才會產生 |
| 模組名稱 | 專案 Build Settings → Product Module Name 需為有效 C 識別符 |
| Swift 版本 | Xcode 14+ 預設 Swift 5,語法相容 |
'YourProject-Swift.h' file not found → 未先編譯、模組名稱含特殊字元、Target 未包含 Swift 檔。Use of undeclared identifier 'SwiftTest' → Swift 類別未加 @objc 或非 public。