swift - 使用桥接头文件的 Swift 构建可重用的库

标签 swift

我正在尝试掌握 Swift 的诀窍,并且我只是从对我编写的一些应用程序进行简单的移植开始。

这些应用程序有一些共同的核心逻辑,为此我在 Xcode 中使用了一个框架目标来与这些项目共享。我在想出 Swift 中的等价物时遇到了麻烦。

我知道 Swift 会编译成模块,这似乎是我想要的。我想要一个可以与我的其他项目共享的 Swift 模块。不过,我似乎遇到的主要问题是,如果它还使用从 Beta 4 开始的桥接 header ,那么你就不能拥有带有 Swift 的框架,我需要调用一些没有 Swift 的 API(比如 Security.framework)绑定(bind)。编译器 (Beta 5) 失败并显示此错误消息:

<unknown>:0: error: using bridging headers with framework targets is unsupported

我该怎么做才能创建一个也需要使用桥接头文件的可重用 Swift 模块?或者,我如何在没有桥接头的情况下使用 Security.framework 中的东西? (或者,除了框架之外,我应该使用其他东西来创建没有任何这些问题的模块吗?)

最佳答案

要在同一框架目标内将 Objective-C 代码导入 swift,只需导入伞形头文件中的每个 Objective-C 头文件即可。苹果官方文档已经提到:https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_81请参阅从同一框架目标中导入代码部分。

cocoa 内置框架已在 swift 中作为模块迁移。要使用 Objective-C 的 Security.framework,您只需添加一行:

import Security

在 swift 文件的头部。

关于swift - 使用桥接头文件的 Swift 构建可重用的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25150983/

相关文章:

Swift 可以放入 `if let` block 吗?

swift - 如何将属性字符串(文本)保存到文件(swift、cocoa)中?

ios - 如何在 SwiftUI 中更改 DatePicker 的大小

swift - iAd 定位 SKSpriteNode 问题

ios - 如果我们用所有可选值声明结构,那么在 swift 中结构的大小是多少?

swift - 在 Swift 中使用 UITapGestureRecognizer 检查按下了哪个 ImageView

ios - Objective-C 类中无法访问 Swift 类?

view - Xcode6/Swift - 如何在多个 View Controller 中实现 iAdBannerView?

swift - relativeDateTimeFormatter 表示 2 天前的日期是昨天

swift - 突然找不到 header 中的 header <module-includes> :1:9: note: in file included from <module-includes>:1: Xcode