ios中.dylib和.a lib的区别是什么?

ios中.dylib和.a lib的区别是什么?,ios,xcode,frameworks,static-libraries,Ios,Xcode,Frameworks,Static Libraries,我知道在Objective c中什么是编译和运行时(方法swizzling是运行时),但我想知道这两个库之间的界限是什么?一个,一个和一个,动态?除了说明一个是静态的,另一个是动态的,它们还有什么作用?我们什么时候需要一个而不是另一个 .a代表静态库 .dylib代表动态库 静态库(.A) 静态库(.A)是一组已编译的类和函数,可与iOS应用程序开发项目一起使用。它是一个已编译的二进制文件或fat文件,可以在项目之间共享 出于不同的原因,您可能需要创建一个静态库 例如: 您希望捆绑一些您和/或

我知道在Objective c中什么是编译和运行时(方法swizzling是运行时),但我想知道这两个库之间的界限是什么?一个,一个和一个,动态?除了说明一个是静态的,另一个是动态的,它们还有什么作用?我们什么时候需要一个而不是另一个

.a代表静态库

.dylib代表动态库

静态库(.A)

静态库(.A)是一组已编译的类和函数,可与iOS应用程序开发项目一起使用。它是一个已编译的二进制文件或fat文件,可以在项目之间共享

出于不同的原因,您可能需要创建一个静态库

例如:

  • 您希望捆绑一些您和/或您团队中的同事经常使用的类,并轻松共享这些类

  • 您希望能够集中一些常见代码,以便轻松添加错误修复或更新

  • 您希望与许多人共享一个库,但不允许他们查看您的代码。-

动态库

以扩展名.dylib结尾的文件是一个动态库:它是一个在运行时而不是编译时加载的库。如果您熟悉Windows或DSO上的DLL,它或多或少是同一类型的东西,只需稍加改动

dylib类似于windows*.dll文件。它们包含通用的、不可修改的代码,可供许多应用程序重用。

静态库(.a)

静态库允许应用程序在编译时将代码加载到其地址空间中。这会导致磁盘空间变大,启动时间变慢。由于库的代码直接添加到链接目标的二进制文件中,这意味着要更新库中的任何代码,也必须重新生成链接目标。 动态库(.dylib)

动态库允许应用程序在运行时实际需要时将代码加载到其地址空间中。因为代码没有静态链接到可执行二进制文件中,所以在运行时加载有一些好处。主要是,这些库可以用新特性或错误修复进行更新,而无需重新编译和重新链接可执行文件。此外,在运行时加载意味着各个代码库可以有自己的初始值设定项,并在从内存中卸载之前在自己的任务完成后进行清理


很好的解释+1.图表可能来自这里: