【问题标题】:Swift interface for ObjC functions in static library for swift code in iOS-7用于 iOS-7 中 swift 代码的静态库中 ObjC 函数的 Swift 接口
【发布时间】:2016-11-24 20:55:08
【问题描述】:

我有一个静态库,我们称之为 S - 它是用 Objective-C 编写的。现在支持 iOS-7 的人很少开始使用 Swift,因此我不得不在 Swift 中为我的函数提供接口。

我知道我们可以使用桥接头将 Objective-C 代码直接导入 Swift(在同一个项目中),但是我应该如何为我的静态库做呢?

另外,我的静态库中不能包含 Swift 文件 - 因为 Swift 仅受动态框架支持。所以,如果我制作动态框架,我就不能为 iOS-7 部署这个库。

【问题讨论】:

    标签: ios objective-c swift xcode


    【解决方案1】:

    静态库将成为链接到它的项目生成的二进制文件的组成部分。因此,在桥接头中包含静态库的标头应该使其功能可从同一项目中的 Swift 代码中使用。

    【讨论】:

    • 这可行,但在用户端有一个额外的步骤来创建桥头并将公共头添加到此桥文件中。无论如何要跳过这部分?
    • @prabodhprakash 不,如果不通过桥接头暴露 Objective-C 接口,Swift 代码将无法使用它。
    • 还有这个桥接头——我们可以在静态库中提供它吗?那加库的项目可以直接消费吗?
    • 桥接头需要在项目设置中配置,并且库用户可能希望向他们的 Swift 代码公开更多的 Objective-C 接口。所以我认为提供一个公共标头是你能做的最好的。
    【解决方案2】:

    我想通了。我们需要在SDK(静态库)中制作module.modulemap,然后这个module.modulemap的路径需要添加到Import Paths in Swift Compiler - Search Paths in Build Settings。此外,如果静态库是通过 CocoaPods 分发的,则可以更改 podspec 以自动执行此设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      相关资源
      最近更新 更多