静态库

作者: 左饵ear | 来源:发表于2016-03-10 17:26 被阅读150次

形式:.a 和.framework

动态库形式:.dylib和.framework

区分:

静态库:连接时会被完整复制到可执行文件中,被多次使用就浪费内存

动态库:连接时不复制直接由系统动态加载到内存,只加载一次,多个程序使用,节省内存,but项目中使用自制的动态库是不被允许上传到AppStore

应用:

1、核心代码封装成一个静态库,别人只需要知道怎么使用就可以

2、使用到第三方时,如果是个MRC的情况,你可以直接将项目配合转换成MRC,但是这样出错的几率会提高。如果直接转换成静态库就不需要管是MRC还是ARC

创建:

1>.a形式的静态库

有单独的方式创建也可以直接在工程中创建,以下步骤在工程中直接创建:

第二步:

添加完成后,还是对工程运行或者编译,会报错,原因:还没有引入库

再次编译,还是报错,且报错是包含x86-64等,选中你的静态库对其进行模拟器编译,然后在将Debug改为NO

注意:如果你默认创建的静态库.h和.m文件删除再创建的话,那么就需要手动添加头文件,否则没有头文件暴露出去,如图所示这样添加

补充:在静态库中添加图片资源,创建一个.bundle文件夹,将其拖入到其中就可以,在使用的时候这样调用:

NSString*path = [[NSBundlemainBundle]pathForResource:@"pic.png"ofType:nilinDirectory:@"myResource.bundle"];

UIImage*image = [UIImageimageWithContentsOfFile:path];

2>.framework形式下的静态库

同样,也可以单独创建,也可以工程中创建,一下是单独创建的步骤:

第一步:如图,创建后自己创建了一个Tool类,然后将系统自己创建的.h和m文件删除,再在如图中所示,找到headers将Project中的Tool.h移到Public,这样就能暴露你的.h文件给别人使用

但是在这种情况下创建的framework系统默认是动态库,可以看到:所以选中static Library就可以了,再进行编译

第二步:使用,选中show in Finder,将那个白色的盒子拖过去就可以使用

第三步:编译发现报错,有问题,只是拖入,并未使用也报错,在你的framework中的Debug改下NO,然后再删除之前的重新拖入

补充:如果你一开始就是动态库拖入的话,编译报错的时候也可可以直接引入他的二进制文件,如下图:在其中添加即可

相关文章

  • 目录一、库二、静态库、动态库、Framework三、打包静态库 1、.a静态库和.framework静态库的区别 ...

  • iOS静态库之间互调冲突问题

    研究目的 1. 在其他静态库(B静态库)中导入公共静态库(A静态库),想直接使用公共静态库(A静态库)中的方法和m...

  • iOS小知识 -- 静态库(一)

    静态库静态库的介绍.a静态库的制作以及测试静态库的架构问题.framework静态库的制作以及测试边开发边制作静态...

  • 静态库

    静态库 静态库动态库简介 .a 静态库:被编译好的二进制文件 静态库:.a, .framework 动态库: .d...

  • Ndk生成so和a库,然后主项目进行调用

    在 NDK 开发中引入第三方静态库和动态库 静态库和动态库 静态库 静态库文件后缀一般为 .a ,利用静态库编译成...

  • iOS 静态库和动态库的制作

    静态库和动态库 一、静态库和动态库的存在形式 静态库: .a 和 .framework 动态库: .dylib 和...

  • ios中静态库.a的制作

    在ios中制作静态库之前,先来了解关于静态库的一些概念。 八、静态库和动态库在使用上的区别。静态库:链接时,静态库...

  • ios中静态库.a的制作和使用

    在ios中制作静态库之前,先来了解关于静态库的一些概念。 八、静态库和动态库在使用上的区别。静态库:链接时,静态库...

  • iOS 静态库

    iOS 静态库 iOS 静态库

  • 静态库和动态库

    静态库和动态库的存在形式静态库:.a 和 .framework动态库:.dylib 和 .framework 静态...

网友评论

  • 云无心:我靠, 为什么这个frameWork这么简单, ,,是xcode7之后这么搞吗
    左饵ear:嗯,之前版本的不一样吗?

本文标题:静态库

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