如何从Swift调用C?

 nilue1_203 发布于 2023-01-12 08:43

有没有办法从Swift调用C例程?

很多iOS/Apple库只是C,我仍然希望能够调用它们.

例如,我希望能够从swift调用objc运行时库.

特别是,如何桥接iOS C标头?

3 个回答
  • 编译器将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交互.

    2023-01-12 08:48 回答
  • 是的,您当然可以与Apples C库进行交互.这里解释如何.
    基本上,C类型,C指针等被转换为Swift对象,例如intSwift中的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);
    

    这是最初的答案.

    2023-01-12 08:50 回答
  • 万一您和我一样不熟悉XCode,并想尝试Leandro的答案中发布的摘录:

      文件->新建->项目

      选择“命令行工具”作为项目预设,并将项目命名为“ cliinput”

      右键单击项目导航器(左侧的蓝色面板),然后选择“新建文件...”。

      在下拉对话框中,名称为“ UserInput”。取消选中“也创建头文件”框。单击“下一步”后,将询问XCode是否应为您创建Bridging-Header.h文件。选择“是”。

      复制并粘贴上面Leandro的答案中的代码。单击播放按钮后,它将在终端中编译并运行,该终端在xcode中内置在底部面板中。如果您在终端中输入数字,将返回一个数字。

    2023-01-12 08:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有