日常开发中,别人的三方库你肯定接触不少,用的也不少。
来,说几个听听:AFNetworking,Masonry,MJRefresh、FMDB。。。
此处省略一万字。。。
如果这些你都没用过,那么你一定走的不是寻常路。我只想说:大神,带带我!
好了,不瞎BB了,要不然要被大家扔鞋子!
首先,我们还是来补充一下关于库的知识?
库是神马?库是一种代码共享的方式。主要用于代码重用和源码隐藏,一般分为静态库和动态库
静态库:链接时完整的拷贝到可执行文件中,多次使用就有多次冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供系统调用。系统只加载一次,多次使用,节省内存。
说了一坨,库究竟长啥样的呢?往下看!
.a、.framework、.dylib、.tbd,.bundle,它们就是库,就长这个样子的!
不过,现在是xcode8的时代,我们已经见不到.dylib了,取而代之的是.tbd
.tbd是个什么东东呢?稍后它们一一自我介绍你就知道了!现在,站队!
站队啦!站队啦!
1 静态库队:.a、.framework
2 动态库队:.framework、.dylib、.tbd
.bundle,发什么呆,你咋不站队呢?
.bundle:好殇心,我既不是静态库,也不是动态库,只是一个资源文件!
好,别殇心了,你先自由活动。。。 .bundle默默离了队。。。
.framework,是不是找事?怎么站到两个队里去啦?
.framework:报告队长,不是我的错啊!我有时是静态库,有时是动态库,这得看我后台是谁了。大boss(苹果iOS系统)名下的就是动态库,而那些小屌丝程序员制作的.framework就是静态库啦。。。
好,你归队吧!.dylib、.tbd你俩也出来自我介绍介绍吧。
.dylib抢先一步。。。。
.dylib:报告,我是动态库。不过我活跃在xcode7之前,现在我转入幕后工作了。不过可以通过以下步骤找到我哟:
1)点击Link Binary With Libraries下方的“+”号,然后选择”Add Other…”
2)按下command+shift+g"
3)输入”/usr/lib”
然后你就能找到啦,想我的话可以经常去看看我噢!我就一直在那儿继续为您服务。报告完毕!
.tbd:报告,我也是动态库,我是跟xcode7一块诞生的。这里apple forfum有提到我的:
For those who are curious, the .tbd files are new "text-based stub libraries", that provide a much more compact version of the stub libraries for use in the SDK, and help to significantly reduce its download size.
也就是说我.tbd是新的“基于文本的存根库”,size更小。我可是一个新星,我都成了stackOverflow上面人们讨论的话题啦!地址在下面:
http://stackoverflow.com/questions/31450690/why-xcode-7-shows-tbd-instead-of-dylib
.a,出列,你来介绍介绍自己吧。
.a:大家好!我是一个纯二进制文件,.h是我的忠实搭档,没有.h,我是满肚子的学问,倒不出来 。有时候,我还会找来我的好哥们.bundle,让它帮我存点图片、xib文件啥的,用的时候就直接管它要了,我哥们.bundle可好了!说完,.a默默转身归队去了。
看看,.a多谦和,你们都要像它学习!
好吧,你们都自由活动吧!
.bundle呢?小样,看到你了。刚才还殇心的不得了,这会都撩妹了!过来,该你表演了!
.bundle兴冲冲的跑了过来。。。 (估计撩妹撩high了)
大家好,我是.bundle,我是一个资源文件,或者是目录文件,什么.plist、.image、.xib、.txt、.db等,都能往我这里放,只要主人(应用程序)需要,随时从我这里把它们取走,俺从来都是任劳任怨,车前马后,听主人调遣!over ! 队长,还有事没,没事我就忙去了。。。
嗯,没事了,去吧,小样。。。。
.bundle:谢队长 !
这小样又兴冲冲的一溜烟跑了。。。 又奔妹子去了。。。
最后,我来总结几句:
库是一种代码共享的方式,有静态库和动态库之分!静态库是哪里用到,就拷贝一份到哪里去,每次都得拷,麻烦不说,还占地方。动态库就比较好了,加载一次,谁用谁来取,方便,占地少。在开发过程中,我们经常碰到的静态库就是.a、.framework,动态库有系统的.framework、.dylib(xcode7之前)、.tbd(xcode7及以后)。.bundle呢,就是一个资源包,用来放图片等资源文件的。
别人的库用着很爽吧?在写代码的时候省不少事吧?那你有没有想过自己也搞个库啥的,为程序员的哥哥姐姐弟弟妹妹们谋点福利呢?
在随后的文章里,我们就来逐一探讨这些库是怎么制作的。。。。