@H_301_0@由于我的工程是OC的工程,添加一个swift文件的时候,苹果会问开发者要不要添加一个bridge,我们需要添加这样一个桥接。 @H_301_0@
@H_301_0@这个时候我们会看到我们的工程里面多了一个MixDemo-Bridging-Header.h的文件。 @H_301_0@我们在swift文件中添加一个方法,返回一个字符串:
class Test4SwiftVC: NSObject { func f1() -> String { return "Test Mix" } }@H_403_23@那么问题来了,如何在OC的.m文件中调用该方法呢? @H_301_0@我们先看看工程文件里面的build Settings: @H_301_0@看到红色标注出来的地方,默认是工程名称-Swift.h,我们自定义为SwiftModule-Swift.h,以方以后修改工程名称的时候出错。这个文件就是我们在OC类中调用swift类的引用头文件,这个类在工程中看不到,但是我们可以Command+点击查看这个类的内容: @H_301_0@
@H_301_0@此时需要将工程Clean下,然后在OC的实现文件中,引用该头文件,即可调用swift中的类了: @H_404_37@- (void)viewDidLoad { [super viewDidLoad]; Test4SwiftVC *VC = [[Test4SwiftVC alloc] init]; [VC f1]; // Do any additional setup after loading the view,typically from a nib. }@H_403_23@这样我们就可以在OC中调用swift中的f1方法了。 @H_301_0@
@H_301_0@那么在swift中怎么调用OC的方法或者变量呢? @H_301_0@我们在ViewController中定义一个字符串:#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (strong,nonatomic) NSString *str; @end@H_403_23@
还记得我们一个的桥接文件么?似乎我们还没用到吧,这个时候就派上用场了。 @H_301_0@我们在MixDemo-Bridging-Header.h中添加OC的头文件:#import "ViewController.h"@H_403_23@
@H_301_0@然后在swift文件中就可以引用啦。。。func f2() { var vc = ViewController() var str: String = vc.str }@H_403_23@ 我们在swift中定义了第二个函数,定义一个变量vc去初始化ViewController这个类,然后定义一个String类型的变量来接收OC类中的参数,这样就可以互相调用啦,调用OC中的函数也是同样的道理,大家可以自己去研究。。。