美文网首页
.a、.framework库制作之一(概览)

.a、.framework库制作之一(概览)

作者: _烩面_ | 来源:发表于2016-12-18 17:12 被阅读31次

    日常开发中,别人的三方库你肯定接触不少,用的也不少。

    来,说几个听听:AFNetworking,Masonry,MJRefresh、FMDB。。。 

    此处省略一万字。。。

    如果这些你都没用过,那么你一定走的不是寻常路。我只想说:大神,带带我!

    gaga

    好了,不瞎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呢,就是一个资源包,用来放图片等资源文件的。

    别人的库用着很爽吧?在写代码的时候省不少事吧?那你有没有想过自己也搞个库啥的,为程序员的哥哥姐姐弟弟妹妹们谋点福利呢?

    在随后的文章里,我们就来逐一探讨这些库是怎么制作的。。。。

    相关文章

      网友评论

          本文标题:.a、.framework库制作之一(概览)

          本文链接:https://www.haomeiwen.com/subject/qqwbjttx.html