如何在全球范围内导入Swift框架?
我想有一种方法可以在每个课程中导入我的Swift Cocoapods,我怎样才能做到这一点?
我尝试了很多东西,但都没有工作。 以下是我没有尝试过的一些方法,如果find了解决问题的方法,
有一个像UIKit一般的import声明,把一切在那里。 (编辑:这失败了)
以某种方式将Swift框架放入Obj-C briding头文件中并将其导入。
Swift强烈build议不要这样做,因为这会引入模块之间的隐式耦合。
但是,您可以通过在导入其他模块的模块中声明一个typealias
来使全局可用的符号可用:
import ModuleName public typealias ClassName = ModuleName.ClassName
没有办法做到这一点。 这不是一个bug,这是一个语言function(到目前为止,就像Swift 2.2一样)。
Swift使用模块 (Apple在Objective-C的Xcode 5中介绍了它们),每个文件都是一个语义单元,因此您需要明确告知Xcode哪些模块暴露给定义的文件。
不仅没有你所描述的行为的支持,但你也不应该试图绕过它。 使用不必要的(未使用的)模块理论上可以产生较慢的代码(考虑到编译器将这些信息用于优化过程)。
您应该可以通过在导入之前添加@_exported来全局导入它。
@_exported import Podname
但是,就像之前提到的海报一样,这不被推荐。
你不想这么做的原因是:
想象一下,如果两个框架都使用相同的方法名称 ,那么编译器将不知道应该运行哪种方法。
要了解更多信息,请参阅此问题
从Swift4开始:
- 正在一个Swift项目中
- 想要全球导入另一个Swift项目(并使用cocoapods)
我只是设法通过添加以下行到我的桥接头:
#import <PodName/PodName-Swift.h>
这种做法有多好/好? 不知道,但我只是想在我的项目全球可用的一些扩展。 这个伎俩。