Swift框架的使用者中的传递导入

克里斯蒂克

假设我有一个框架定义了一个协议,该协议取决于第三个框架导出的符号:

import CoreLocation

public protocol BarsAPIClient {
    func getBars(around location: CLLocation, completion: @escaping (Result<[String], Error>) -> Void)
}

现在,在我的应用程序中,我想添加协议的具体实现:

import MyFramework

class BarsAPIClientImpl: BarsAPIClient {
    func getBars(around location: CLLocation, completion: @escaping (Result<[String], Error>) -> Void) {
        // actual implementation goes here
    }
}

但是,以上代码由于CLLocation不可见而无法编译

在此处输入图片说明

我也可以通过导入轻松解决此特定错误CoreLocation但是,对于具有多个依赖项的更复杂的情况,这可能会变得很乏味。

因此,问题是该模块是否可以声明其所有公共依赖关系,以便该模块的使用者自动链接到那些依赖关系?

空虚

当前有2种方法可以做到这一点

  1. 您可以为此使用未记录的swift功能,该功能可能会在下一个swift版本中中断。

将其添加到中的快速文件中MyFramework

@_exported import CoreLocation
  1. 您可以使用objc-swift互操作的当前行为,其工作方式相同。

使用以下内容创建MyFramework.h公共伞头MyFramework

#import <CoreLocation/CoreLocation.h>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章