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打成静态库是没有问题的,可是在用这个静态库的project中。调用category中的方法时会有找不到该方法的执行时错误(selector not recognized)。解决的方法是:在使用静态库的project中配置other linker flags的值为-ObjC。
4 假设一个静态库非常复杂。须要暴露的.h比較多的话。就能够在静态库的内部创建一个.h文件(一般这个.h文件的名字和静态库的名字同样),然后把全部须要暴露出来的.h文件都集中放在这个.h文件里,而那些原本须要暴露的.h都不须要再暴露了,仅仅须要把.h暴露出来就能够了。
iOS库--.a与.framework的更多相关文章
- 【转】iOS库 .a与.framework区别
转自:http://blog.csdn.net/lvxiangan/article/details/43115131 一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态 ...
- iOS开发之——制作framework静态库教程
环境: 硬件:macbook air 系统:OSX EI Capitan 版本:10.11.3 xcode : Version 7.2.1 (7C1002) 最近在做ios的静态库(据说framewo ...
- iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...
- IOS .a静态库的和.framework制作
什么是库? 库是程序代码的集合,是共享程序代码的一种方式 根据源代码的公开情况,库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking 闭源库 不公 ...
- iOS制作自己的Framework框架
1.新建工程选择iOS —> Cocoa Touch Framework 2.进入工程将工程自带的文件干掉 3.导入自己所需的文件 4.4.TARGETS —> Build Setting ...
- [iOS] 建立与使用Framework
[iOS] 建立与使用Framework 前言 使用XCode开发iOS项目时,开发人员可以将可重用的程序代码,封装为Library或是Framework来提供其他开发人员使用.这两种封装方式在使用的 ...
- 教你写能被舒服舒服又舒服地调用的iOS库
目录 前言 脑洞开一开 分析 整容 结语 前言 2014年过的那么快,过年又那么块,2015年又是飞快地节奏,真尼玛感觉上帝是不是无聊使用了变速外挂开启了加速模式~到现在博主都无法接受已经上班的事实… ...
- iOS+Swift: 使用MessageUI.framework发送短信
在iOS中, 可以使用MessageUI.framework框架发送短信, 步骤如下: 代码下载http://git.oschina.net/yao_yu/swift_cnblogs_samples/ ...
- RestKit ,一个用于更好支持RESTful风格服务器接口的iOS库
简介 RestKit 是一个用于更好支持RESTful风格服务器接口的iOS库,可直接将联网获取的json/xml数据转换为iOS对象. 项目主页: RestKit 最新示例: 点击下载 注意: 如果 ...
随机推荐
- 使用Azure Docker容器注册表服务
1.登录你的Azure 容器注册表服务 az acr login --name ledesign 2.给你本地准备好的Image打上上云之前的版本标签 docker tag ledesign-serv ...
- WinSocket聊天程序实例(多线程)
#pragma comment(lib,"Ws2_32.lib") #include <stdio.h> #include <Winsock2.h> SOC ...
- pythonOCC版 瓶子代码
#!/usr/bin/env python # -*- coding:utf-8 -*- ##Copyright 2009-2015 Thomas Paviot (tpaviot@gmail.com) ...
- Mysql数据库概述
阅读目录 引擎介绍 表介绍 创建表 查看表结构 mysql中的数据类型 表的完整性约束 修改表结构 删除表 多表结构的创建与分析 练习 返回顶部 引擎介绍 mysql中的存储引擎(https://ww ...
- LeetCode Weekly Contest 27
1. 557. Reverse Words in a String III 分割字符串,翻转. class Solution { public: string reverseWords(string ...
- BZOJ4518: [Sdoi2016]征途(dp+斜率优化)
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1875 Solved: 1045[Submit][Status][Discuss] Descript ...
- 如何拿到阿里算法校招offer
好多同学有问过怎么能拿到阿里算法类校招的offer,刚好看到这篇文章分享给大家,详情可以看原文链接,原文链接中有视频讲解. 师兄师姐的建议: 之前初学算法的时候上过的公开课和看过的书 1. Cours ...
- Centos7下git服务器及gogs部署
1.安装git # yum install -y git 2.创建git用户及组 # groupadd git # adduser git -g git # mkdir /home/git # mkd ...
- C#中跨线程访问控件
net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生,推荐的解决方法是采用代理,用代理方法来间接操作不是同一线程创建的控件. 第二种方法是禁止编译器对跨线程访问作检查,可以实现访问,但是出不出 ...
- associatedtype关联类型
associatedtype关联类型 定义一个协议时,有的时候声明一个或多个关联类型作为协议定义的一部分将会非常有用.关联类型为协议中的某个类型提供了一个占位名(或者说别名),其代表的实际类型在协 ...