使用 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 接口(如果启用了上述构建设置)。