一、什么是库

库是程序代码的集合,是共享程序代码的一种方式。

二、库的分类

根据源代码的公开情况,库可以分为2种类型。

1.开源库

公开源代码,能看到具体实现。

比如,SDWebImage、AFNetworking

2.闭源库

不公开源代码,是经过编译后的二进制文件,看不见具体实现。

三、静态库和动态库

1.动态库和静态库的存在形式

静态库:.a和.framework

动态库:.dylib和.framework

2.使用区别

静态库:链接时,静态库会被完整地复制到可执行文件中,被多次使用就有多份冗余拷贝。如下图:

动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。如下图:

3.查看静态库支持的架构(命令)

lipo -info XXX.a

4.架构列表

i386:iPhone模拟器  3GS—>iPhone5

x86_64:iPhone模拟器 5s 6plus

armv7:iPhone 3GS 4s

armv7s:iPhone 5 5c

arm64:iPhone 5s 6plus

5.合并静态库(同时支持不同的架构)

/*将XXX1.a和XXX2.a合并生成XXX3.a (生成的XXX3.a在当前路径下)*/

lipo –create XXX1.a XXX2.a –output XXX3.a

6. 静态库文件的版本(4种)

1)真机-Debug版本

2)真机-Release版本

3)模拟器-Debug版本

4)模拟器-Release版本

四、调试版本(Debug版本) VS 发布版本(Release版本)

- 调试版本会包含完整的符号信息,以方便调试

- 调试版本不会对代码进行优化

- 发布版本不会包含完整的符号信息

- 发布版本的执行代码是进行过优化的

- 发布版本的大小会比调试版本的略小

- 在执行速度方面,调试版本会更快些,但不意味着会有显著的提升

五、静态库编译

选择编译的静态库带头文件。

操作:(.a)

target build phases Copy files  +

操作:(.framework)

target build phases headers  public/private/project

六、framework

因为framework文件既可能是静态库,也可能是动态库。

使用时,动态库应该添加库。(target—>general embedded binarles)(自己制作framework时,默认制作成动态库)

framework制作成静态库:

target build settings linking match-o type static library

iOS学习之库的更多相关文章

  1. IOS学习:常用第三方库(GDataXMLNode:xml解析库)

    IOS学习:常用第三方库(GDataXMLNode:xml解析库) 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过 ...

  2. iOS学习笔记16-数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

  3. JHChart 1.1.0 iOS图表工具库中文ReadMe

    JHChart(最新版本1.1.0) 好吧,的确当前的github上已经存有不少的iOS图表工具库,然而,当公司的项目需要图表时,几乎没有哪个第三方能够完全满足我的项目需求.无奈之下,本人不得不花费一 ...

  4. 【原】iOS学习47之第三方-FMDB

    将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...

  5. iOS学习路线图

    一.iOS学习路线图   二.iOS学习路线图--视频篇       阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天       学习后目标:    ...

  6. iOS 学习资源

    这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的 ...

  7. iOS学习资源个人整理

    1208更新: http://www.tuyiyi.com                                    图翼网 https://github.com/Alamofire/Al ...

  8. 【原】iOS学习之第三方-AFNetworking1.3.0

    将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 AFNetworking 第三方集成到工程中,具体请看上篇博客iOS学习46之第三方CocoaPods的安装和使用(通用方 ...

  9. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

随机推荐

  1. Django学习之项目结构优化

    其实就是采用包结构,比如: 目录models,包含__init__.py,a.py,b.py 然后将model class写在a和b中,但是这样的话,导入时就要改变了! from models imp ...

  2. url传递参数

    url:'/randowCode?t='+Math.random(); //当给某个赋值可以: $('#change').click(function(){ $("#codeimage&qu ...

  3. Netbeans取消CTRL+\才能代码提示的方法

    更好的方法: ------------------------------------------------------------ 边打字边按CTRL+\进行代码提示的方法我TM也是醉了 简而言之 ...

  4. Windows手动安装MySQL

    由于MySQL 5.6(也许5.5)以后去掉了Server Instance Configuration Wizard(服务实例配置向导),于是msi版变成了和zip版一样,要手动配置. * 假定安装 ...

  5. 40-语言入门-40-C小加之随机数

    题目地址: http://acm.nyist.net/JudgeOnline/problem.php?pid=255   15 20 32 40 67 89 300 400   代码: #includ ...

  6. Microsoft SQL Server JDBC 驱动程序支持矩阵

    本页包含 Microsoft SQL Server JDBC 驱动程序的支持矩阵和支持生命周期策略. Microsoft JDBC 驱动程序支持生命周期矩阵和策略 Microsoft 支持生命周期 ( ...

  7. Vmware私有云虚拟机(CentOS 6.5 OS)之根分区扩容

    注:适用于未使用lvm管理的分区,目前仅在CentOS 6.5 上操作,其他系统尚未测试,请谨慎操作 一.查看当前分区状况 [root@disk-test ~]# df -h Filesystem   ...

  8. In the shell, what does “ 2>&1 ” mean?

    In a Unix shell, if I want to combine stderr and stdout into the stdout stream for further manipulat ...

  9. CI的意思

    Continuous integration (CI) is the practice, in software engineering, of merging all developer worki ...

  10. haml入门

    1.什么是Haml Haml是HTML abstraction markup language,遵循的原则是标记应该是美的.Haml能够加速和简化模版,长处是简洁.可读.高效. 2.erbm模板和ha ...