Last active
June 30, 2016 01:12
-
-
Save mactive/04e0b643ad1a2095ffc61ec9e00f7bce to your computer and use it in GitHub Desktop.
Cocoa Static Library,framework,dynamic framework
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$(SRCROOT)/projectComponents/RNShare/RNShare | |
http://lucifer1988.github.io/blog/2015/11/05/ioskai-fa-bei-wang-lu-1/ | |
1.library和framework的比较 | |
library也就是我们常用的.a文件,而framework就是.framework文件,当然还有.dylib这样的文件。 | |
静态库和动态库的区别 | |
静态库:链接时完整地拷贝至可执行文件夹中,被多次使用时会有多份冗余拷贝。 | |
动态库:链接时不复制,程序运行是由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。 | |
iOS库的形式 | |
静态库:.a和.framework | |
动态库:.dylib和.framework | |
系统提供的.framework是动态的,而自己开发的.framework是静态的 | |
.a和.framework区别 | |
.a就是一个纯二进制的文件,而.framework还会包含头文件和资源文件 | |
.a一般是要配合.h头文件使用的,.framework是可以直接使用的 | |
实际上.framework = .a + .h + sourceFile | |
需要注意的问题 | |
注意理解:无论是.a静态库还.framework静态库,我们需要的都是二进制文件+.h+其它资源文件的形式,不同的是,.a本身就是二进制文件,需要我们自己配上.h和其它文件才能使用,而.framework本身已经包含了.h和其它文件,可以直接使用。 | |
图片资源的处理:两种静态库,一般都是把图片文件单独的放在一个.bundle文件中,一般.bundle的名字和.a或.framework的名字相同。.bundle文件很好弄,新建一个文件夹,把它改名为.bundle就可以了,右键,显示包内容可以向其中添加图片资源。 | |
category是我们实际开发项目中经常用到的,把category打成静态库是没有问题的,但是在用这个静态库的工程中,调用category中的方法时会有找不到该方法的运行时错误(selector not recognized),解决办法是:在使用静态库的工程中配置other linker flags的值为-ObjC。 | |
如果一个静态库很复杂,需要暴露的.h比较多的话,就可以在静态库的内部创建一个.h文件(一般这个.h文件的名字和静态库的名字相同),然后把所有需要暴露出来的.h文件都集中放在这个.h文件中,而那些原本需要暴露的.h都不需要再暴露了,只需要把.h暴露出来就可以了。 | |
创建.a文件的一篇博客,创建.framework的一篇博客。 |
Author
mactive
commented
Jun 29, 2016
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment