iOS库--.a与.framework
-
一、什么是库?
库是共享程序代码的方式,一般分为静态库和动态库。
二、静态库与动态库的区别?
静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
三、iOS里静态库形式?
.a和.framework
四、iOS里动态库形式?
.dylib和.framework
五、framework为什么既是静态库又是动态库?
系统的.framework是动态库,我们自己建立的.framework是静态库。
六、a与.framework有什么区别?
.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。
.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
.a + .h + sourceFile = .framework。
建议用.framework.
七、为什么要使用静态库?
方便共享代码,便于合理使用。
实现iOS程序的模块化。可以把固定的业务模块化成静态库。
和别人分享你的代码库,但不想让别人看到你代码的实现。
开发第三方sdk的需要。
八、制作静态库时的几点注意:
1 注意理解:无论是.a静态库还.framework静态库,我们需要的都是二进制文件+.h+其它资源文件的形式,不同的是,.a本身就是二进制文件,需要我们自己配上.h和其它文件才能使用,而.framework本身已经包含了.h和其它文件,可以直接使用。
2 图片资源的处理:两种静态库,一般都是把图片文件单独的放在一个.bundle文件中,一般.bundle的名字和.a或.framework的名字相同。.bundle文件很好弄,新建一个文件夹,把它改名为.bundle就可以了,右键,显示包内容可以向其中添加图片资源。
3 category是我们实际开发项目中经常用到的,把category打成静态库是没有问题的,但是在用这个静态库的工程中,调用category中的方法时会有找不到该方法的运行时错误(selector not recognized),解决办法是:在使用静态库的工程中配置other linker flags的值为-ObjC。
4 如果一个静态库很复杂,需要暴露的.h比较多的话,就可以在静态库的内部创建一个.h文件(一般这个.h文件的名字和静态库的名字相同),然后把所有需要暴露出来的.h文件都集中放在这个.h文件中,而那些原本需要暴露的.h都不需要再暴露了,只需要把.h暴露出来就可以了。
iOS库--.a与.framework相关推荐
- iOS架构-静态库.a 和.framework的区别(0)
原文网址:https://my.oschina.net/kaqijiang/blog/649632 一.什么是库? 库是共享程序代码的方式. 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存 ...
- iOS架构-制作静态库.a和.framework 的相互依赖(10)
有一句名言:当你知道的东西越多,你才会发现你不懂的东西越多. 现在我有点体会到了,当我去了解静态库,我发现我要学习脚本:当我接触编译C/C++库,我发现我要去了解交叉编译:当我想了解组件化架构,我发现 ...
- [iOS] 建立与使用Framework
[iOS] 建立与使用Framework 前言 使用XCode开发iOS项目时,开发人员可以将可重用的程序代码,封装为Library或是Framework来提供其他开发人员使用.这两种封装方式在使用的 ...
- extjs chart无法在panel中显示_HighChart教程:Swift中的Highcharts iOS库
以下文章总结了如何在Swift中使用Highcharts iOS库. 我们将对2016/2017赛季四支顶级冠军联赛球队的统计数据进行可视化. A.如何创建Highcharts项目 入门 在Xcode ...
- 教你写能被舒服舒服又舒服地调用的iOS库
目录 前言 脑洞开一开 分析 整容 结语 前言 2014年过的那么快,过年又那么块,2015年又是飞快地节奏,真尼玛感觉上帝是不是无聊使用了变速外挂开启了加速模式~到现在博主都无法接受已经上班的事实- ...
- 报错 Building for iOS, but the embedded framework ‘xxx.framework‘ was built for iOS + iOS Simulator
1.问题描述 我在Xcode13.4上面运行一个集成了.a文件的工程之后报错,上一周还是好好的,突然就不行了,不知道咋回事 报错信息如下: Building for iOS, but the embe ...
- iOS 静态库制作,Framework制作,Bundle制作
在上一篇教程(中译版)中,你学到了怎么样创建一个可复用的圆形旋钮控件.然而你可能不清楚怎样让其他开发者更方便地去复用它. 如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法 ...
- 【IOS学习】ios库之.framework与.a文件
- 库:是共享程序代码的方式 库的种类:静态库与动态库 1.静态库:.a文件与.framework文件 2.动态库:.dylib文件与.framework文件 注:.framework文件为系统创建则 ...
- iOS快速开发框架--Bee Framework
Bee Framework是一款iOS快速开发框架,允许开发者使用Objective-C和XML/CSS来进行iPhone和iPad开发,由Gavin Kwoe和QFish开发并维护. 其早期原型曾经 ...
最新文章
- Netty 简单服务器 (三)
- jdk8中java.util.concurrent包分析
- Nuget打包类库及引用
- 数据结构-Hash总结(一):理论学习篇
- TensorFlow windows之Tensorboard使用
- springBoot笔记(一) @SpringBootApplication的神奇魔力
- 国家建筑标准设计图集
- python爬虫网易云音乐评论最多的歌_网易云音乐歌曲评论爬虫
- 影院售票系统 php源码,影院售票系统
- 汇智创科机器人,【汇智创科机器人】这个周六,和孩子一起“动手不动口”,比比看谁最棒!...
- windows 下 c++ 二维码生成库
- 深入浅出 CSS 动画
- 从内容打到社交,头腾大战矛头又指向了游戏
- 全景图矫正 matlab,全景图的后期水平矫正的三种方法
- FPGA_demo2:按键测试
- a 标签发送put请求_HTTP PUT请求该如何传输请求参数呢?
- 手机浏览器呼出QQ聊天窗口
- 去哪儿网2014笔试算法题汇总
- java future 异常处理_Java异常处理总结
- 全球及中国导电聚合物(CP)型电子鼻发展前景与投资战略分析报告2022~2028年
热门文章
- JAVA子类是球父类是圆_java的父类和子类,这是矛盾...
- 计算机关机又自动重启,为什么w7电脑关机后自动重启_w7电脑关机后自动重启怎么解决...
- python编写人机交互界面_Python编写个天气查询应用(可视化界面)
- 2019计算机科学与技术全日制调济,2019年华侨大学计算机科学与技术学院全日制学术型研究生调剂信息(第三批)...
- 电脑销售渠道_双十一遇上英雄联盟S10,苏宁游戏装备销售增长258%
- python编程与下位机通讯_ros 与下位机通信
- 用shell编写一个三角形图案
- 机器学习(监督学习) 项目流程模板
- phpcms9-6-0 一键getshell工具
- VS2015中快捷注释代码块