Swift 与 Objective-C混编xxx-Swift.h File not found

 

在iOS 开发中,由于苹果14年发布了Swift语言,具备简单实用、高效等诸多优点,越来越受开发者青睐。另外,由于Objective-C多年发展和稳定性,有很多框架(特别是商业SDK)采用Objective-C,或者之前的老项目使用Swift语言。都需要涉及到混编,才可以实现文件相互识别与引用。

Swift中使用Objective-C

重点文件:桥接文件

如果创建项目选择的是Swfit, 如果要使用Objective-C的框架(实际项目中一定会遇到)或者文件,就需要创建桥接文件xxx-Bridging-Header.h,然后将Objective-C引入。一般你创建一个.h文件,Xcode会自定询问你是否创建桥接文件。

Swift中需要使用到的Objective-C都需要在桥接文件中引入。这样swift调用的时候才可以识别到。

Objective-C中使用Swift

重点文件:Swfit头文件(一下简称Swift.h)

创建项目基于Objective-C,如果要使用Swfit文件,在编译的时候会自动为Swift文件生成一个"项目名-Swift.h"的头文件,里面包含了所有Swift文件的Objective-C方式声明。

 "XXX-Swift.h"文件找不到错误

在开发中有可能会遇到“xxx-Swift.h File not found”的编译错误,有如下修复方式

1. 项目名引起

检查项目名是否含有空格或连接符,如果有,需要引入的swift.h文件名字,比如下面的

     My Project   文件名应该是My_Project-Swfit.h

     My-Project   文件名应该是My_Project-Swfit.h

如下图:

看到有人说需要将build setting Packaging 下的defines Module 设置为Yes, 我不知道有没有用,反正我是没有设置都可以。

2.  循环引起

描述一下我遇到这个问题的情况,我们定义了一个pch文件用来引入所有需要用到的Objective-C头文件,最后一行也引入了Swift.h文件,(这样的想法是Objective-C使用Swfit的时候不需要再引入)。 最后我们在桥接文件中引入pch文件。最后发生着Swift.h文件找不到。

在阅读了这个大哥【Objective-C与Swift混编】的文章后,豁然开朗。

混编编译顺序

当 Objective-C 与 Swift 进行混编时,编译的过程(Pipeline)是:

  • 首先编译 Swift Module。预编译 Bridging Header 后,再编译 Swift 源文件。
  • Swift 编译完成后,生成 ProjectName-Swift.h 的头文件供 Objective-C 使用。
  • 最后编译 Objective-C 源文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值