Swift和Objective-C混合编译

本文详细介绍如何在Swift与Objective-C项目中实现互相调用。包括在Swift项目中添加OC文件,反之亦然,创建Objective-C Bridging Header,以及如何在Swift中导入OC类和在OC中调用Swift代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,在已有的Swift项目添加OC文件,或者在已有的OC项目添加Swift文件,会提示是否创建Objective-C Bridging Header。

2,点击“Create Bridging Header”,会创建bridge文件,系统默认的文件名是项目名+bridge+Header.h,并且系统默认会在 Build Settings->Objective-C Bridging Header 添加bridge文件路径引用。

如果没有选择系统默认提示“Create Bridging Header”, 只需要自己创建一个.h文件,在Build Settings ->Objective-C Bridging Header设置路径参数就行了。

3,如果需要在 Swift 中使用OC的代码或者库,只需要在XXX-bridge-Header.h文件中 import 相应的OC代码或者库的头文件即可。

#import "HttpRequestHandle.h"

在Swift文件中引用OC类

    func LoadImageList() {
        let dict :NSMutableDictionary = NSMutableDictionary()
        dict.setObject(mUserID ?? "", forKey: "userid" as NSCopying)
        dict.setObject(mArchiveID ?? "", forKey: "caseid" as NSCopying)
        HttpRequestHandle.getImageList(dict, success: { (response: Any?) in
            self.mPicList.removeAll()
            let newarray = response as! Array<Any>
            for subDic in newarray {
                let newdic = subDic as! Dictionary<String, Any>
                self.mPicList.append(newdic["thumbimg"] as! String)
            }
            NSLog("mPicList:%@", self.mPicList)
            self.reloadData()
        }, root: self)
    }

4,找到targets->build settings->Objective-C Generated Interface Header Name,获得Swift对应的桥接头文件,默认的文件名是项目名-Swift.h。

XXX-Swift.h 文件不会出现在项目中,而是由Xcode自动生成,可以在build路径下找到相应项目的XXX-Swift.h文件。

在OC文件中添加XXX-Swift.h的引用

#import "TestDemo-Swift.h"

在OC中调用Swift

- (void)viewDidLoad {
    [super viewDidLoad];
    TestView *view = [[TestView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:view];
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值