OC-swift混编

OC-swift 混编

开始

OC项目添加一个swift文件或者swift创建OC文件,Xcode会提示是否创建桥接文件,选择是,使用默认名字,会创建一个”<#工程名#>-Bridging-Header.h”的文件。

如果选择了否,后面也可以手动创建一个.h文件,然后在Build Setting -> Swift Complier - General -> Objective-C Bridging Header 手动添加这个.h文件的路径。

桥接文件是swift调用OC时使用,而OC调用swift则需要在OC文件里import “<#工程名#>-Swift.h”文件,”<#工程名#>-Swift.h”文件是自动生成的工程中不可见,直接使用即可。

类的调用

OC调用OC的类

#import “类名.h”

OC调用swift类

#import “<#工程名#>-Swift.h” ,然后可使用所有的swift类(受访问权限影响),这个import只会作用于当前文件,所以这行代码最好放到pch文件里。

swift调用swift类

无需import,直接使用。(受访问权限影响)

swift调用OC类

需要把所有用到的OC文件放到”<#工程名#>-Bridging-Header.h”中,所有swift文件内就都可以使用了。

第三方库使用

swift使用cocospod需要在Podfile中加入use_framework!

OC调用OC的库

#import “库.h”

OC调用swift库

#import “<#库名#>-Swift.h”,就可以使用了。

swift调用OC/swift库

都可以import <#库名#>来使用。

特别的,调用OC的库还可以在桥接文件里 #import “库.h”,这样swift可以全局使用这个库。

代理

swift使用OC协议

swift类遵循一下协议实现即可。

OC使用swift协议

不能直接用,需要把定义在swift里的protocol,前面加@objc关键字,转化为OC协议后,才可使用。

其它

  • swift 完全摒弃了宏,所以原OC项目中的宏在swift都不可用,需要新建一个swift文件,然后用let/ver fun 来替代宏的内容。新建swift文件里变量和方法默认全局可用。
  • 继承:swift可以继承OC类,OC不能继承swift类。

如有遗漏,欢迎补充

你可能感兴趣的:(iOS技术总结,iOS,OC,swift,混编)