Swift与OC混编

  1. iOS 8.0以后引入

  2. 会自动创建OC-SwiftDemo-Bridging-Header.h
  3. Swfit引用OCOC-SwiftDemo-Bridging-Header.himport
  4. 可以通过genareate interface进行OCSwift查看
  5. OC引用Swift需要配置:

png1

  1. OC#import “test-Swift.h”即可引入所有的Swift文件
注意:

Objective-C类、协议、属性、方法、扩展、闭包等所有功能都可以无缝地被转换为Swift接口被Swift文件所调用。Objective-C中为了兼容 Swift,新增了三大特性NullabilityLightweight Generics__kindof


Objective-C调用Swift Xcode会自动为Project生成头文件以便在Objective-C中调用。

Objective-C类中调用Swift,只需要#import "productModuleName-Swift.h"即可调用,Xcode提供的头文件以Swift代码的模块名加上-Swift.h为命名。 在这个头文件中,将包含Swift提供给Objective-C的所有接口、Appdelegate及自动生成的一些宏定义

注意:

productModuleName-Swift.h在Xcode中是无法搜索查看的,只能从import中点击进去查看。

在大部分情况下,Objective-C都可以无缝地调用Swift,但是由于Swift相对于Objective-C多了一些新特性,比如泛型、元组、枚举等,所以Swift暴漏给Objective-C的接口多了一些限制,因此Swift只能暴露在Objective-C中有效的接口。