常见错误
1、clang: error: no such file or directory:
clang: error: no such file or directory: '/Users/helinyu/Library/Developer/Xcode/DerivedData/TestSwiftExmaple-cglsdhrhidjznhbpycozaliyaams/Build/Products/Debug-iphonesimulator/PackageFrameworks/AlamofireDynamic.framework/AlamofireDynamic'
这个是因为项目里卖弄使用了动态库,所以我们要将静态库去掉。
删除灭有dynamic的这个静态库。
2、为什么导入就是两个库
在 Swift 项目中导入 SnapKit 时,如果你看到两个不同的依赖项 —— 一个是 SnapKit
,另一个是 SnapKit Dynamic
,这是由于它们的编译方式和链接方式的不同:
SnapKit:
这是静态库(static framework)。
当你导入静态库时,库的代码会在编译时直接链接到你的应用程序中,并成为应用的一部分。静态库的好处是性能更好,因为它不需要在运行时加载外部库,但应用体积可能会增加。
SnapKit Dynamic:
这是动态库(dynamic framework)。
动态库在运行时动态链接,不会直接嵌入到应用程序中,而是独立的库文件。这样可以减小应用的体积,因为多个应用可以共享同一个动态库,但运行时需要加载库,可能会有少许的性能开销。
为什么会出现这两种?
在某些项目中,开发者可能需要使用静态库以优化性能和减少动态链接的复杂性。对于需要动态链接的场景,比如希望库可以在运行时更新或在多个目标之间共享库,则会使用动态库。
一些依赖管理工具(如 Swift Package Manager 或 CocoaPods)在集成依赖时,会自动提供静态和动态版本的选择,取决于项目的设置。
如何选择?
静态库 (
SnapKit
):如果你希望将库代码直接打包到应用中,并且不需要动态链接或插件化支持,可以选择静态版本。适合性能要求较高的应用。动态库 (
SnapKit Dynamic
):如果你需要动态加载库,或者库的版本可能需要在运行时进行更新,则选择动态版本。
通常,默认选择静态库即可,除非你的项目明确需要动态库。
Last updated