使用 Objective-C 程式碼中的 Swift 類

在同一個模組中

在名為MyModule 的模組中,Xcode 生成一個名為 MyModule-Swift.h 的頭,它將公共 Swift 類暴露給 Objective-C。匯入此標頭以使用 Swift 類:

// MySwiftClass.swift in MyApp
import Foundation

// The class must be `public` to be visible, unless this target also has a bridging header
public class MySwiftClass: NSObject {
    // ...
}
// MyViewController.m in MyApp

#import "MyViewController.h"
#import "MyApp-Swift.h"                    // import the generated interface
#import <MyFramework/MyFramework-Swift.h>  // or use angle brackets for a framework target

@implementation MyViewController
- (void)demo {
    [[MySwiftClass alloc] init];  // use the Swift class
}
@end

相關構建設定:

  • Objective-C 生成的介面標頭名稱 :控制生成的 Obj-C 標頭的名稱。
  • 安裝 Objective-C 相容性標頭 :-Swift.h 標頭是否應該是公共標頭(用於框架目標)。

StackOverflow 文件

在另一個模組中

使用 @import MyFramework; 匯入整個模組,包括 Swift 類的 Obj-C 介面(如果啟用了上述構建設定)。