在进行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里的方法。
相关推荐
Apple苹果IOS开发Swift编程语言入门教程中文版.pdf
与Objective-C兼容:Swift可以与Objective-C代码无缝集成,可以调用Objective-C的类和函数,也可以被Objective-C调用。 开源性:Swift是开源的,意味着任何人都可以参与到它的发展和改进中。 Swift语言在苹果的...
中海阳苹果编程语言Swift解析:中海阳将推动应用开发巨变
Apple苹果IOS开发Swift编程语言入门教程中文版借鉴.pdf
介绍: 《Swift 编程语言》是苹果官方对 Swift 语言做的权威指南,很遗憾苹果公司并没有进行多语言支持。所以我独立发起了这个手册的翻译工作——与其他现存翻译不同的是:它同步更新苹果官方的 Swift 开发者预览版 ...
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
Swift是苹果今年最新推出的编程语言,结合了各种语言的优点。
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
Swift是一种由苹果公司开发的现代化编程语言,专门用于iOS、macOS、watchOS和tvOS应用程序开发。...6. **适合移动应用开发**:Swift是苹果平台的官方编程语言,与iOS、macOS等系统深度集成,可以方便地开发应
Swift是一种由苹果公司开发的编程语言,用于iOS、macOS、watchOS和tvOS应用程序的开发。它是一种现代化的编程语言,结合了C和Objective-C的优点,并添加了许多新的特性和功能。 一些Swift的重要知识点包括: 类和...
《iOS开发实战:苹果生态圈编程卷(Swift语言版)》代码.7z
书中系统讲解了在iOS和macOS平台上,使用苹果的Swift语言开发iPhone、iPad和Mac应用的基本概念和编程技巧。主要围绕使用Swift语言进行iOS和macOS开发,结合大量代码示例,教会读者利用高 级iOS和macOS特性开发真实的...
Swift 是由苹果公司开发的一种现代的、通用的编程语言,用于iOS、macOS、watchOS和tvOS等系统的应用程序开发。下面是关于 Swift 的一些重要概念: 1. **安全与快速**:Swift旨在提供更安全(safety)、更快速(fast...
苹果的新编程语言 Swift 简介