首先,一些通用定义(特定于iOS):
静态库,正式地静态共享库- 在编译时链接的代码单元,不会改变。
然而,iOS静态库是not允许包含图像/资产(仅限代码)。您可以通过使用来解决这个挑战媒体包 though.
更好、更正式的定义可以在维基百科上找到 here.
动态库,正式地动态共享库- 在运行时绑定符号。当符号被解析时,包含该符号的相应模块被链接。
由于有很多优点,建议使用动态共享库。但是,在早期版本的 Mach-O 中,应用程序启动速度比使用静态库的应用程序稍慢。最新版本比带有静态库的应用程序要快得多。
苹果不建议使用独立式动态共享库 - 这种动态共享库仅对 macOS 平台有意义(该库存储在 /use/lib 中,只有 Apple 可以正式这样做),但非独立动态共享库是当今任何框架的一部分(.框架包)。
框架(又名 .framework 文件) - 只是一个捆绑包(与应用程序捆绑包相同,但有细微差别)。这是一个包含一组资源的文件夹:
- 动态/静态共享库;
- 笔尖文件;
- 本地化字符串;
- 头文件;
- 文档;
- 资产文件等
因此,您实际上可以拥有静态框架 or a 动态框架,它们只是具有静态共享库或动态共享库的容器。
See the 软件框架 Wiki更多细节。
因此在 iOS 上,你唯一的选择基本上就是使用静态共享库(.a
文件)或框架(内部有静态或动态共享库)。
EDIT
关于一个子项目据我所知,在一个项目中,为了使其正常工作/编译,您基本上必须设置一个编译链,首先编译子项目,这将创建一个静态框架.a
项目用作依赖项的文件。
这是另一个有用的教程,其中讨论了这一点:
http://www.cocoanetics.com/2011/12/sub-projects-in-xcode/