You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从现有Swift文件为ObjC++创建桥接头文件

手动创建桥接头文件并在ObjC++中调用Swift模块的流程

完全支持手动创建桥接头文件,具体流程如下:

1. 创建桥接头文件

  • 在Xcode的项目目录右键,选择「New File」
  • 在模板窗口中选「iOS/macOS → Header File」,命名格式建议为[项目名]-Bridging-Header.h(比如项目叫MyApp,就命名MyApp-Bridging-Header.h,Xcode会默认识别这个命名格式)

2. 配置项目Build Settings

  • 打开项目的Build Settings,搜索「Objective-C Bridging Header」
  • 在对应字段填入桥接头文件的相对路径,比如文件在项目根目录就填$(SRCROOT)/MyApp-Bridging-Header.h,在子目录则填$(SRCROOT)/SubFolder/MyApp-Bridging-Header.h
  • 确认「Install Objective-C Compatibility Header」设置为YES(默认即为YES)

3. 标记Swift代码以支持ObjC调用

  • 需要被ObjC++调用的Swift类必须继承自NSObject,且类/函数前要加@objc关键字,示例:
import Foundation

@objc class SwiftModule: NSObject {
    @objc func doSomething() -> String {
        return "来自Swift的返回结果"
    }

    @objc static func staticMethod() {
        print("Swift静态方法被调用")
    }
}

4. 在ObjC++文件中调用Swift代码

  • 在.mm后缀的ObjC++文件顶部,导入Xcode自动生成的兼容性头文件#import "[项目名]-Swift.h"(该文件无需手动创建,命名规则为项目名加-Swift.h),示例:
#import "MyApp-Swift.h"

void callSwiftCode() {
    SwiftModule *swiftObj = [[SwiftModule alloc] init];
    NSString *result = [swiftObj doSomething];
    NSLog(@"%@", result);

    [SwiftModule staticMethod];
}

注意事项

  • 桥接头文件主要用于Swift调用ObjC代码,而ObjC++调用Swift仅需导入自动生成的[项目名]-Swift.h,但正确配置桥接头是生成该兼容性头的前提
  • 若Swift代码使用自定义类型,需确保这些类型也用@objc标记,或符合ObjC兼容要求
  • 项目名含空格时,兼容性头文件会将空格替换为下划线,比如项目名「My Test App」对应My_Test_App-Swift.h

内容的提问来源于stack exchange,提问作者Space Bear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:23:14