swiftSwift点点滴滴关于WWDC的故事...

WWDC之Integrating Swift With Obje

2015-12-30  本文已影响172人  One9398

前言

Session将重点讲解如何让SwiftObjective-C两种不同的语言共同工作.

内容

让Swift文件使用Objective-C文件的API

Swift完全支持和使用Objective-C的框架Framework;
在已有的Objective-C文件中创建Swift文件,Xcode会提示需要创建一个工程名-Bridging -Header.h格式的桥接头文件,此文件用来声明需要暴露给Swift文件使用Objective-C API的头文件,由开发者自己决定需要给Swift文件引用的Objective-C文件.若Xcode未出现此提示,也可以自动创建桥接头文件,然后在项目targetbuilding setting中搜索header后找到Bridging header选项,手动添加自己的桥接文件相对路径.

手动设置桥接文件路径.png
Objective-C文件使用Swift文件的API

Swift文件里声明的协议Protocol,如要在Objective-C文件中调用必须在协议声明前添加@objc关键字;
Xcode会自动生成头文件用于将Swift的API暴露给Objective-C文件使用,该头文件命名格式固定为"工程名-Swift.h",只需要先导入此头文件就能使用所有Swift文件的API.

各自API相互转换方式.png
在Objective-C框架中使用Swift

给框架Target添加Swift文件时不会提示创建桥接文件,但能自动获取到当前框架的其他文件所有API进行调用,这是系统自动进行的编译优化和处理.
Objective-C中的initWithXX方法在转化为Swift方式,将自动移除With,生成init(XX格式 (只针对init方法的转换)
h文件需要引用Swift文件对象时,使用@class进行导入;
m文件引用Swift文件时使用固定格式FrameworkName/AppName-Swift.h导入自动生成的头文件;

总结

Objective-C代码与Swift代码相互交互的过程,Xcode已经足够强大能够自动完成具体实现代码的桥接功能,这也让开发者能更好地使用这两种语言,而不会因为两种语言的不同语法和特性而纠结过多的时间.

上一篇下一篇

猜你喜欢

热点阅读