Skip to content

Instantly share code, notes, and snippets.

@qyzhaojinxi
Last active December 30, 2015 03:04
Show Gist options
  • Save qyzhaojinxi/3639fe5238234af9871c to your computer and use it in GitHub Desktop.
Save qyzhaojinxi/3639fe5238234af9871c to your computer and use it in GitHub Desktop.
Objective-C和Swift混编 #混编 #Objective-C #OC #Swift

#Objective-C和Swift混编

分两种情况,一种Swift调用OC,一种OC调用Swift。

###一、Swift调用OC:

在Swift中创建OC文件,包括.h和.m文件,这时Xcode会提示创建Objective-C bridging header文件,反之也一样。点击Yes,生成文件,文件名称格式为

product module name-Bridging-Header。例如:EZLivePhotos-Bridging-Header。

当然也可以手动创建一个头文件,然后在targets->build settings ->Object-C Bridging Header把它设置为桥接头文件。

将你想使用的OC类引用到这个头文件,这样你就可以在Swift里调用这个OC类了。

###二、OC调用Swift:

同样也需要一个桥接文件,和上边一样,创建或者导入Swift文件时自动生成就好。

然后在你需要使用Swift类的OC文件中,导入这样一个头文件,名称格式为

product module name-swift.h,这个-swift是固定格式。例如#import "EZLivePhotos-swift.h”。

product module name你可以在argets->build settings ->packaging->Product Module Name找到。

导入后,你可以通过点击command加左键点击进去查看。在其中你可以看到你的Swift类被编译成OC的写法。如果没有你可以clean一下,然后Command+B重新编译一下就可以。

这个时候,在OC类中就可以随便调用Swift类了。不过有时候引用的Swift类会找不到alloc方法,不能初始化。为了解决这个问题,你要尽量让你的Swift类是集成与NSObject类的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment