Swift使用Objective-C代码中的Swift类

示例

在同一模块中

在名为“ MyModule ”的模块内,Xcode生成一个名为的标头,该标头MyModule-Swift.h将公共Swift类公开给Objective-C。导入此标头以使用Swift类:

//MySwiftClass.swiftin MyApp
import Foundation

// 该类必须是“ public”才能可见,除非该目标也具有桥接头public class MySwiftClass: NSObject {
    // ...
}
//MyViewController.min MyApp

#import "MyViewController.h"#import "MyApp-Swift.h"                    // 导入生成的接口#import <MyFramework/MyFramework-Swift.h>  // 或将尖括号用于框架目标

@implementation MyViewController
- (void)demo {
    [[MySwiftClass alloc] init];  // 使用Swift类
}
@end

相关的构建设置:

  • Objective-C生成的接口头名称:控制生成的Obj-C头的名称。

  • 安装Objective-C兼容性标头:-Swift.h标头是否应为公共标头(用于框架目标)。


在另一个模块中

使用@import MyFramework;导入整个模块,包括到Swift类的Obj-C接口(如果启用了上述构建设置)。