我研究过Swift和一些C的基础知识。我怎样才能在一个项目中结合使用C和Swift?我可以忽略Objective-C吗?
答案 0 :(得分:7)
将Swift和C混合是非常可能的。实际上它非常简单。例如,如果您在游乐场中键入import Darwin
,您会发现各种C函数:
import Darwin
let i = atoi("42")
let path = String.fromCString(getenv("PATH"))
let voidptr = malloc(10 * UInt(sizeof(Int)))
let ptr = UnsafeMutablePointer<Int>(voidptr)
for i in 0..<10 {
ptr[i] = i
}
let buffer = UnsafeBufferPointer(start: ptr, count: 10)
reduce(buffer, 0, +) // sum(1 to 10) = 45
free(ptr)
有各种便利转换,例如在上面的代码中,“42”自动转换为C样式字符串以传递到atoi
。类似地,如果声明var i: Int = 0
,则可以将其传递给C API,该C API将C指针指向int作为f(&i)
,并且当您传入数组时,数组也会自动转换为指针。
有关如何与Swift中的C进行交互的详细信息,请参阅Apple网站上的the docs。
答案 1 :(得分:0)
您绝对可以直接与C代码连接。 This page有很多关于你如何做的细节。
答案 2 :(得分:0)
Swift旨在与Objective-C无缝兼容。这意味着我们可以在Objective-C中使用Swift API,反之亦然。
使用swift肯定可以与纯粹用C语言编写的库进行交互。这是在不同移动平台上使用相同库的最佳方式,因为Android和iOS都支持纯C.但是,您无需学习Objective-C因为我们只能使用swift来开发应用程序。
Apples文档中的注释:您无法直接将C ++代码导入Swift。相反,为C ++代码创建一个Objective-C或C包装器。