【问题标题】:Swift 2.1 framework which uses objective-c code internally (but does not re-export objective-cSwift 2.1 框架,内部使用了 Objective-c 代码(但不重新导出 Objective-c
【发布时间】:2016-01-18 07:57:57
【问题描述】:

我正在尝试创建一个封装了一组功能的 iOS swift 框架,其中一些功能需要包装一个 c/objective-c 静态库。我需要从框架内调用objective-c包装函数——据我所知(基于关于如何在框架目标中混合和匹配objc和swift的文档:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html),我必须导入objective-c我的总括标题中的标题,以将目标 c 暴露给框架内的 swift 代码。这也将objective-c 包装器暴露给我的框架的任何消费者。我怎样才能避免这样做?我希望能够从我的框架中的 swift 代码调用 Objective-c 包装器函数,但不将包装器本身暴露给任何框架消费者......

【问题讨论】:

    标签: objective-c swift frameworks swift2


    【解决方案1】:

    只是用一个答案来更新这个问题——我在 WWDC 上向苹果的一位工程师询问了这个问题。 swift 无法实现我想要的。

    在我的例子中,我想在我的 swift 框架中调用的 Objective-c api 非常小,所以创建一个使用运行时调度 (performSelector) 来调用适当方法的小型(私有)swift 类就足够了在转换为 AnyObject 之后。这需要手动维护一个快速选择器定义,该定义复制了objective-c头文件中的每个方法声明——但是对于一个非常小的受限场景,这并不是那么糟糕(即使它不是理想的)。

    【讨论】:

      猜你喜欢
      • 2015-05-03
      • 2018-07-02
      • 1970-01-01
      • 2019-04-09
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多