`
larlf
  • 浏览: 107693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

苹果系统开发中的混合编程(2):Swift和C的相互调用

阅读更多
 
在进行Swift和C之间的相互调用时,有必要先了解一下两种语言之间的类型转换关系:
 
C 类型 Swift 类型
bool CBool
char, signed char CChar
unsigned char CUnsignedChar
short CShort
unsigned short CUnsignedShort
int CInt
unsigned int CUnsignedInt
long CLong
unsigned long CUnsignedLong
long long CLongLong
unsigned long long CUnsignedLongLong
wchar_t CWideChar
char16_t CChar16
char32_t CChar32
float CFloat
double CDouble
 
 
下在还是先演示一下如何在Swift里对C的方法进行调用,创建一个Swift的项目:
 
 
在项目里创建C代码文件:
 
 
这个时候会提示你是否要生成Bridging Header,选择创建。
 

 

文件创建完成后的代码结构如下,可以看到有一个文件名为:<工程名>-Bridging-Header.h的文件,这就是在Swift和C之间进行桥接的文件。
 

 

在项目的配置中可以看到这个桥接文件是在这里指定的,所以如果忘记创建了这个文件也不用担心,自己新建一个在这里指定一下就可以了。

 

实现C的代码:
 
MyCFile.h
 

 

MyCFile.c
 

 

在桥接文件中引入C代码的头文件,非常简单,直接import一下就可以了。
 

 

然后在swift文件中就可以直接调用C的方法:
 

 

下面我们再添加一些代码,来实现两点:
一、C代码中对Swift代码的调用
二、数据的相互传递(以字符串为例)
 
MyCFile.h
 

 C对Swift方法的调用,其实相当于是注册一个全局的函数指针,可以参见SwiftCallbackFun的定义。

这个里面有一些OC的语法:
^ 操作符,说明这是一个闭包,也就是Block,Swift里的函数都是以闭包的形式传递进来的。
__nonnull 表示对象不应该为空,因为在混编的时候,Swift编译器并不知道一个Objective-C对象到底是optional还是non-optional,所以在Xcode 6.3引入了一个Objective-C的新特性:nullability annotations,这里可以定义为 __nullable 或 __nonnull 。
 
MyCFile.c
这里有一个对Swift方法的回调。
 

 

main.swift

 

Swift里的代码,要注意的有两点:
一、在Swift里对C中传入字符串处理的方式
二、要先给全局的Callback赋值,这样才能从C里调用到Swift里的方法。
 
分享到:
评论

相关推荐

    Swift和Objective-C混合编程示例代码

    在iOS应用开发中,Swift和Objective-C的混合编程是一个常见的需求。Swift是Apple于2014年推出的现代化编程语言,而Objective-C则是苹果长期使用的系统级编程语言,两者各有优势。本示例代码旨在帮助开发者理解如何在...

    swift OC 混合编程

    Swift和Objective-C(OC)混合编程是iOS应用开发中常见的一种技术,特别是在过渡期间或处理遗留代码时。Swift,作为苹果公司推出的现代化编程语言,以其简洁的语法和强大的功能受到开发者喜爱,而Objective-C则是iOS...

    Swift与OC,C++混合编程

    Swift与Objective-C和C++的混合编程能力使得开发者可以利用现有Objective-C或C++代码库,同时享受Swift带来的诸多优点。 Objective-C是苹果的另一种主要编程语言,它是基于C语言的,并添加了Smalltalk风格的消息...

    Swift编程语言中文教程

    5. **与Cocoa和Objective-C的兼容性**: 可以无缝集成现有Objective-C和Cocoa框架,支持与Objective-C的混合编程。 #### 三、Swift的开发背景 - Swift的开发建立在苹果多年的技术积累之上,包括编译器、调试工具和...

    swift-在OC项目里的OC代码调用Swift方法Swift代码里调用OC代码

    Swift 和 Objective-C (OC) 的混合编程允许开发者充分利用两种语言的优势。Swift 是苹果推出的一种现代化、类型安全的语言,而 Objective-C 则是历史悠久且广泛应用于苹果生态系统的语言。本篇文章将详细探讨如何在 ...

    swift-在项目中OC和Javascript如何相互调用集成多个Demo

    在iOS应用开发中,Objective-C(OC)和JavaScript之间的交互是一个常见的需求,特别是在构建混合式应用或者需要在原生代码中利用Web技术时。`Swift`作为苹果的现代编程语言,虽然与OC有所不同,但同样可以实现这样的...

    Swift 英文版

    Swift是一种全新的编程语言,主要用于iOS和OS X应用的开发。Swift在设计上汲取了C和Objective-C语言的优点,同时摒弃了C语言的兼容性限制。Swift采用了安全的编程模式,并引入了现代编程特性,使得编程过程更加简单...

    Swift 编程语言

    Swift不仅吸收了C和Objective-C的优点,而且摆脱了C语言的一些限制,为开发者提供了更多现代化的编程特性。 #### 二、Swift语言的特点 1. **安全性**:Swift采用了多种安全机制来避免常见的编程错误,如空指针引用...

    oc和swift混编

    总之,OC和Swift的混合编程是iOS开发中的一种常见情况,理解和掌握混编技术对于提升开发效率和项目质量至关重要。通过学习和实践,开发者可以熟练地在这两种语言之间切换,构建出更加高效和优雅的应用。

    -the-swift-programming-language-中文版

    Swift是一种由苹果公司设计的全新编程语言,旨在为iOS和macOS应用开发提供强大的支持。Swift不仅汲取了C和Objective-C的优点,还摆脱了C兼容性的限制,为开发者带来了更加安全、高效、易于使用的编程体验。Swift的...

    在oc的工程中调用swift文件类

    Objective-C作为苹果的早期开发语言,有着深厚的基础,而Swift则是苹果在2014年推出的现代化编程语言,具有更简洁的语法和更高的性能。在实际项目中,可能会遇到既有Objective-C代码又有Swift代码的情况,这就需要...

    Swift语言官方教程中文翻译(附英文版)

    Swift是苹果公司推出的一种强大的、安全的编程语言,主要用于开发iOS、macOS、watchOS和tvOS等平台的应用。这份“Swift语言官方教程中文翻译”是Apple官方文档的中文版本,旨在帮助中国开发者更好地理解和掌握Swift...

    The Swift Programming Language

    综上所述,Swift作为一种新兴的编程语言,在设计之初就充分考虑到了安全性、易用性和与现有生态系统之间的兼容性,它代表了苹果对于软件开发未来的设想。无论是对于初学者还是经验丰富的开发者,Swift都提供了广阔的...

    C和Object混合编程的案例

    Objective-C 是苹果公司官方推荐开发 macOS 和 iOS 应用程序的编程语言,在苹果公司推出 Swift 之前,Objective-C 是主要的开发语言。Objective-C 的语法结构混合了 C 语言的过程式特性和 Smalltalk 的面向对象概念...

    iOS 8 Programming Fundamentals with Swift

    - **Cocoa兼容性**:Swift设计之初就考虑到了与Cocoa API的良好兼容性,这意味着Swift可以直接调用C和Objective-C编写的API。 - **Swift与Objective-C的关系** 尽管Swift作为一种新的编程语言被推广,但...

    1.4 SM_Swift_Windows编程_visualc++_

    Windows编程_visualc++”似乎是一个章节或项目编号,结合描述中的“Sistemas de manufactura flexible 1.4”,我们可以推断这是一个关于柔性制造系统(Flexible Manufacturing Systems, FMS)的教程,特别关注在...

    Swift编程语言 英文版

    此外,Swift 还支持与 Objective-C 的混合编程,使得新旧代码可以轻松地协同工作。 #### 三、Swift的设计哲学 ##### 3.1 友好性 Swift 对于新手程序员来说非常友好。它的语法简洁明了,易于理解,同时又具备强大...

    js和swift互调

    JavaScript 和 Swift 互调是现代跨平台开发中的一个重要主题,特别是在构建混合移动应用或与 Web 界面交互的原生 iOS 应用时。这两种语言分别代表了 Web 开发和移动应用开发领域的主流技术,而将它们结合在一起,...

    swift中文版

    Swift是一种由苹果公司开发的强大且直观的编程语言,它专为iOS、iPadOS、macOS、watchOS 和 tvOS 设计。Swift 结合了 C 和 Objective-C 的优点,同时摒弃了它们的复杂性。Swift 旨在让开发者编写更快、更安全的应用...

    苹果系统 OBJECT_c语言指南

    虽然Swift已经逐渐成为苹果生态系统的首选编程语言,但Objective-C仍然在很多现有项目中有着广泛的应用,特别是在较老的iOS应用和Mac OS X应用中。 #### 八、结论 Objective-C是一种强大的面向对象编程语言,它为...

Global site tag (gtag.js) - Google Analytics