`
jsntghf
  • 浏览: 2476413 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Swift调用Objective-C

    博客分类:
  • iOS
阅读更多

Swift调用Objective-C需要一个名为<工程名>-Bridging-Header.h的桥接头文件。桥接头文件的作用是为Swift调用Objective-C对象搭建一个桥,它的命名必须是<工程名>-Bridging-Header.h,我们需要在桥接头文件中引入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工程模板。

单击Next按钮,出现如下图所示的界面。

相关工程选项设置完成后,单击Next按钮,进入下一级界面,根据提示选择项目的存放位置,然后单击Create按钮,出现如下图所示的界面。

在左边的导航栏中打开main.swift文件,会看到如下图所示的代码界面。


 

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

右键选择HelloSwift组,然后选择菜单中的New File,弹出新建文件模板对话框,选择OS X→Source→Cocoa Class

单击Next按钮,出现如下图所示的界面。

相关选项设置完成后,单击Next按钮,进入保存文件界面,根据提示选择存放文件的位置,然后单击Create按钮。

如果是第一次创建Objective-C类,那么保存完成的时候,Xcode会提示我们是否添加桥接头文件,如下图所示,弹出一个对话框,点击Yes按钮后,会在工程中创建桥接头文件HelloSwift-Bridging-Header.h。

此时的项目文件结构,如下图所示

自动创建桥接头文件时,Xcode同时会自动设置好桥接头文件的路径,如下图所示

如果我们是手动创建桥接头文件的话,它的命名必须是<工程名>-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-SwiftTrace-跟踪Swift和Objective-C的方法调用

    SwiftTrace - 跟踪Swift和Objective-C的方法调用

    Swift调用Objective-C编写的API实例

    主要介绍了Swift调用Objective-C编写的API实例,介绍的比较全面和详细,对Objective-C代码的重复利用有极大好处,的朋友可以参考下

    IOS之弹窗 - Swift4.2/Objective-C版本(Swift、Objective-C版本别分实现了不同的功能!

    2、Objective-C类需要继承弹窗基类时必须选择该库的Objective-C版本中的基类; 3、两个库可以同时存在一个项目中,建议两个库同时使用。 ``` ## 温馨提示: ```温馨提示 1、同一窗口内目前只支持弹窗一个弹窗,...

    Swift调用Objective-C代码

    目前Swift语言所编写的应用才刚刚可以使用Xcode 6 GM版本提交,而Objective-C作为苹果的主开发语言存在了很多年了。目前尚无成熟的Swift库可用,所以当前编写应用可以说基本离不开调用Objective-C代码的情况。

    跟踪Swift和Objective-C方法调用-Swift开发

    SwiftTrace跟踪应用程序捆绑包或框架中非最终类的Swift和Objective-C方法调用。 考虑使用Xtrace,但要使用Swift和Objective-C。 您还可以将“方面”添加到非最终Swift类的成员函数中。t SwiftTrace跟踪应用程序捆绑...

    SwiftObjcCocoapodsExample:Swift 和 Objective-C 混合搭配示例

    SwiftObjcCocoapods 示例Swift 、Objective-C 和 Cocoapods 混合搭配示例它证明了: Swift 调用 Swift 函数Swift 调用 Objective-C 函数Objective-C 调用 Swift 函数Swift 从 Swift 函数调用 Objective-C 函数并将 ...

    SwiftTrace:跟踪Swift和Objective-C方法调用

    迅捷追踪跟踪应用程序捆绑包或框架中非最终类的Swift和Objective-C方法调用。 考虑使用但要使用Swift和Objective-C。 您还可以在非最终Swift类的成员函数中添加“方面”,以在执行函数实现之前或之后调用闭包,而...

    Swift如何调用Objective-C的可变参数函数详解

    主要给大家介绍了关于Swift如何调用Objective-C的可变参数函数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用swift具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

    Swift和Objective-C 混编注意事项

    Swift和Objective-C 混编注意事项整理: 前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛。当然这对新入行的童鞋没来讲,的确算是福音,但对于整个iOS...

    swift-CJMethodLog对于Objective-C中的任意类任意方法均可监听其调用日志

    CJMethodLog对于Objective-C中的任意类、任意方法,均可监听其调用日志

    SwiftCallOC:该项目使用了Swift和Objective-C混合编程,然后去请求WebService数据,用来查询手机号码归属地

    所以该项目使用Swift调用了OC代码进行了WebService的请求。 ##2.功能说明    本项目主要实现的功能就是进行手机号码归属地的查询,使用了一个免费的WebService接口,只要输入号码,就能返回手机号码的归属地和...

    swift开发指南

    Swift调用Objective-C需要一个名为“&lt;工程名&gt;-Bridging-Header.h”的桥接头文件,如图18-1 所示。桥接头文件的作用是为Swift调用Objective-C对象搭建一个桥,它的命名必须是“&lt;工程名&gt;- Bridging-Header.h”,我们...

    Swift语言编程案例讲解.pdf

    与Objective-C兼容:Swift可以与Objective-C代码无缝集成,可以调用Objective-C的类和函数,也可以被Objective-C调用。 开源性:Swift是开源的,意味着任何人都可以参与到它的发展和改进中。 Swift语言在苹果的...

    Objective-C与Swift之间的互相调用和跳转

    主要给大家介绍了关于Objective-C与Swift之间的互相调用和跳转的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    C和Object混合编程的案例

    Objective-C 在语法上有一些独特的特点,比如方法调用使用方括号`[]`,消息接收者在方括号内部,方法名和参数则写在方括号内,如 `[object methodWithParameter:parameterValue]`。 虽然随着 Swift 的普及,更多的...

    Swift打包Framework,兼容Objective-C项目调用(Xcode9.4 iOS11).zip

    软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...

    lumos:around围绕Objective-C运行时的轻量级Swift包装器

    围绕Objective-C运行时的轻巧包装。lumos到底是什么? 如前所述,lumos是对objective-c运行时函数的轻量包装,可以更轻松地访问运行时。 它使Swift中的翻页和挂接等操作非常简单。 例如,假设您希望每当调用...

    C语言中调用Swift函数实例详解

    在Apple官方的《Using Swift with Cocoa and Objectgive-C》一书中详细地介绍了如何在Objective-C中使用Swift的类以及如何在Swift中使用Objective-C中的类。在后半部分也介绍了如何在Swift中使用C函数,不过对于如何...

    用于Objective-C的轻量级Promise库-Swift开发

    RWPromiseKit Desiciption用于Objective-C的轻量级Promise库关于Promise Promise对象用于延迟和异步计算。 Promise表示没有RWPromiseKit Desiciption的操作。Objective-C的轻量级Promise库关于Promise Promise对象...

    RCBacktrace:获取Objective-C和Swift的任何线程的回溯

    获取用于Objective-C和Swift的任何线程的回溯。 只有少量的C代码,几乎所有代码都是在Swift中完成的。 它比Thread.callStackSymbols功能强大得多,callStackSymbols只能获取当前线程调用堆栈符号,而该符号不能在...

Global site tag (gtag.js) - Google Analytics