Swift 已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,也大大降低了iOS入门门槛。iOS10推出后,Xcode8也推出了更新,Xcode8下iOS版本最低适配已经变为iOS8.0,而且Swift版本也趋于稳定,从某种意义上来说,Swift的时代正式开始,替代Objective-C也只是时间问题。但是有些时候不得不使用Swift与Objective-C混编。
今天我们来看看两者混编的时候需要注意的问题
混编无非两种情况
- 在Objective-C工程中使用Swift文件
- 在Swift工程中使用Objective-C文件(这种情况居多)
混编中的两个重要文件
1.桥接文件
桥接文件ProjectName-Bridging-Header.h
,在首次创建其他文件的时候,会自动生成。如果不小心删除后,也可以手动添加,不过名字必须是ProjectName-Bridging-Header.h
头文件(名称组成:工程名-Bridging-Header.h
),如果名字记不清也可以自己新建Header file后,在Targets-->Build Settings-->Swift Compiler - General-->Objective-C Bridging Header
配置文件路径,这个文件主要是Swift使用OC类时使用。
2.Objective-C Generated Interface Header Name文件
这个文件是混编时,系统生成的Swift文件对应的Objective-C的头文件,具体可以在Targets-->Build Settings-->Swift Compiler - General-->Objective-C Generated Interface Header Name进行配置,默认文件名是工程名-Swift.h,一般不做改动。
Snip20170816_7.png1.在Objective-C工程中使用Swift文件
在OC中调用的时候也OC 写法一样,加上 #import即可 会自动添加工程名.swift
OC中引入Swift文件.png2.在Swift中使用OC文件
在桥接文件中引入需要的头文件,具体的使用,按照对用的Swift语法结构来写
Swift桥接文件引入OC文件.png3.SubClass
对于自定义的类,Objective-C不能继承来自Swift的类,但是Swift可以继承来自OC的类
4.OC中的宏定义
在Swift中只能使用简单的一些宏定义
Snip20170816_6.png5.s使用OC中的block
OC中BLock定义.png .m文件 block实现.png swift 中实现OC的Block.png当然还有很多我这里没有总结出来,希望大家在遇到需要使用的时候有哪些本文章没有涉及的也可以告诉我,大家一起学习,一起进步。
网友评论