Swift调用Objective-C

Swift调用Objective-C需要一个名为<工程名>-Bridging-Header.h的桥接头文件。桥接头文件的作用是为Swift调用Objective-C对象搭建一个桥,它的命名必须是<工程名>-Bridging-Header.h,我们需要在桥接头文件中引入Objective-C头文件,而且桥接头文件是需要管理和维护的。

Swift调用Objective-C
一、创建Swift工程

为了能够更好的介绍混合搭配调用,我们首先创建一个Swift工程。出于简单考虑,我们可以创建一个Mac OS X命令行工程,而不是一个iOS工程。

启动Xcode 6,然后单击File→New→Project菜单,在打开的Choose a template for your new project界面中选择OS X→Application→Command Line Tool工程模板。
Swift调用Objective-C
单击Next按钮,出现如下图所示的界面。
Swift调用Objective-C
相关工程选项设置完成后,单击Next按钮,进入下一级界面,根据提示选择项目的存放位置,然后单击Create按钮,出现如下图所示的界面。
Swift调用Objective-C
在左边的导航栏中打开main.swift文件,会看到如下图所示的代码界面。

Swift调用Objective-C
 

二、在Swift工程中添加Objective-C类

右键选择HelloSwift组,然后选择菜单中的New File,弹出新建文件模板对话框,选择OS X→Source→Cocoa Class
Swift调用Objective-C
单击Next按钮,出现如下图所示的界面。
Swift调用Objective-C
相关选项设置完成后,单击Next按钮,进入保存文件界面,根据提示选择存放文件的位置,然后单击Create按钮。

如果是第一次创建Objective-C类,那么保存完成的时候,Xcode会提示我们是否添加桥接头文件,如下图所示,弹出一个对话框,点击Yes按钮后,会在工程中创建桥接头文件HelloSwift-Bridging-Header.h。
Swift调用Objective-C
此时的项目文件结构,如下图所示
Swift调用Objective-C
自动创建桥接头文件时,Xcode同时会自动设置好桥接头文件的路径,如下图所示
Swift调用Objective-C
如果我们是手动创建桥接头文件的话,它的命名必须是<工程名>-Bridging-Header.h,文件创建好之后,我们还要配置桥接头文件的路径,如上图中的Objective-C Bridging Header。

三、代码实现

(1)ObjCObject.h

#import <Foundation/Foundation.h>

@interface ObjCObject : NSObject

- (NSString *)sayHello:(NSString *)greeting withName: (NSString *)name;

@end

(2)ObjCObject.m

#import "ObjCObject.h"

@implementation ObjCObject

- (NSString *)sayHello:(NSString *)greeting withName: (NSString *)name {
    NSString *string = [NSString stringWithFormat:@"Hi, %@ %@.", name, greeting];
    
    return string;
}

@end

(3)main.swift

import Foundation

var obj : ObjCObject = ObjCObject()
var hello = obj.sayHello("Good morning", withName:"Eric")

println(hello)

要使Swift能够调用Objective-C,还必须在桥接头文件中引入Objective-C头文件。HelloSwift-Bridging-Header.h代码如下

#import "ObjCObject.h"

如果还有其他的Objective-C头文件,都需要在此桥接头文件中引入。

至此,整个工程创建完毕,点击运行按钮,即可看到运行结果。
Swift调用Objective-C

相关推荐