《iOS开发拓展篇—静态库.docxVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《iOS开发拓展篇—静态库

iOS开发拓展篇—静态库一、简单介绍1.什么是库?  库是程序代码的集合,是共享程序代码的一种方式2.库的分类  根据源代码的公开情况,库可以分为2种类型  (1)开源库    公开源代码,能看到具体实现    比如SDWebImage、AFNetworking?(2)闭源库    不公开源代码,是经过编译后的二进制文件,看不到具体实现    主要分为:静态库、动态库二、静态库和动态库1.静态库和动态库的存在形式静态库:.a 和 .framework动态库:.dylib 和 .framework2.静态库和动态库在使用上的区别静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝(图1所示)动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存(图2所示)图1 ?  图2    ??注意点:项目中如果使用了自制的动态库,不能被上传到AppStore三、静态库的制作(.a)(1)选择“Cocoa Touch Static Library”(2)输入静态库名称(以MJRefresh为例)  (3)删除自动生成的文件  (4)添加库需要包含的源代码     注意:资源文件是不能打包到.a文件中的。(5)选择需要暴露出来的.h文件,.m文件会自动编译到.a文件中    添加,并选择需要暴露的头文件  设置(移动)为公开的。(6)选择真机设备,然后 Command+B 编译,libMJRefresh.a文件从红色变为黑色  这个时候,程序会报错,因为框架中包含了CGFloat,它是UIKit里面的东西,因此可以在pch文件中包含UIKit框架。    再次进行编译,编译成功后生成的.a文件就是静态库。(7)选择模拟器,依然 Command+B ,模拟器和真机环境下用的.a文件是分开的  (8)右击“Show In Finder”,查看制作好的.a文件  ? ?说明:Debug-iphoneos文件夹里面的东西是用在真机上的Debug-iphonesimulator文件夹里面的东西是用在模拟器上的?如果Scheme是Release模式,生成的文件夹就以Release开头(9)合并两个文件如果想让一个.a文件能同时用在真机和模拟器上,需要进行合并在终端输入指令:  lipo -create?Debug-iphoneos/libMJRefresh.a?Debug-iphonesimulator/libMJRefresh.a?-output?libMJRefresh.a说明:蓝色部分是固定指令红色、紫色是真机和模拟器.a文件的路径绿色是所合成.a文件的路径  ?  生成的文件(静态库)      提示:1)文件大小.a文件的体积(一般情况下)  真机用的.a 模拟器用的.a  所合成.a == 真机用的.a + 模拟器用的.a2).a的类型    通过lipo –info libMJRefresh.a可以查看 .a 的类型(模拟器还是真机)  (10)如何使用.a  直接将.a、.h、资源文件拖拽到其他项目中即可  别人拿到的框架,只有.a文件和暴露出来的头文件  注意:如果库中还包含了一些资源文件(如图片等),那么资源文件也应该放在上面的文件夹中。四、制作静态库的注意点(1)注意:  无论是 .a 静态库还是 .framework 静态库,最终需要的都是:二进制文件 + .h + 其它资源文件(2).a 和 .framework 的使用区别  .a 本身是一个二进制文件,需要配上 .h 和 其它资源文件 才能使用  .framework 本身已经包含了 .h 和 其它资源文件,可以直接使用(3)图片资源的处理  如果静态库中用到了图片资源,一般都放到一个bundle文件中,bundle名字一般跟 .a 或 .framework 名字一致  bundle的创建:新建一个文件夹,修改扩展名为 .bundle 即可,右击bundle文件,显示包内容,就可以往bundle文件中放东西  建议:自己制作的静态库中要用到的图片资源,不建议直接以png的后缀名方式拖到项目中使用,而是推荐使用放到bundle文件中。这样可以避免静态库的图片名和使用静态库的项目中存在的图片产生冲突。  1)新建一个文件夹,把需要打包的资源图片放在里面      2)修改扩展名为?.bundle,敲回车,点击添加。    (4)多文件处理  如果静态库需要暴露出来的 .h 比较多,可以考虑创建一个主头文件(一般 主头文件 和 静态库 同名)  在主头文件中包含所有其他需要暴露出来的 .h 文件  使用静态库时,只需要#import 主头文件  实际上苹果官方就是这么做的,例如:#import UIKit

文档评论(0)

lunwen1978 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档