有没有办法从Swift调用C例程?
很多iOS/Apple库只是C,我仍然希望能够调用它们.
例如,我希望能够从swift调用objc运行时库.
特别是,如何桥接iOS C标头?
编译器将C API转换为Swift,就像它对Objective-C一样.
import Cocoa let frame = CGRect(x: 10, y: 10, width: 100, height: 100) import Darwin for _ in 1..10 { println(rand() % 100) }
请参阅文档中的与Objective-C API交互.
是的,您当然可以与Apples C库进行交互.这里解释如何.
基本上,C类型,C指针等被转换为Swift对象,例如int
Swift中的C 是一个CInt
.
我为另一个问题构建了一个小例子,可以用来解释如何在C和Swift之间架起桥梁:
main.swift
import Foundation var output: CInt = 0 getInput(&output) println(output)
UserInput.c
#include <stdio.h> void getInput(int *output) { scanf("%i", output); }
cliinput桥接,Header.h
void getInput(int *output);
这是最初的答案.
万一您和我一样不熟悉XCode,并想尝试Leandro的答案中发布的摘录:
文件->新建->项目
选择“命令行工具”作为项目预设,并将项目命名为“ cliinput”
右键单击项目导航器(左侧的蓝色面板),然后选择“新建文件...”。
在下拉对话框中,名称为“ UserInput”。取消选中“也创建头文件”框。单击“下一步”后,将询问XCode是否应为您创建Bridging-Header.h文件。选择“是”。
复制并粘贴上面Leandro的答案中的代码。单击播放按钮后,它将在终端中编译并运行,该终端在xcode中内置在底部面板中。如果您在终端中输入数字,将返回一个数字。