静态库介绍与简单演练及同名资源冲突解决(.a格式的静态库)
1、静态库和动态库都是闭源库,不公开源代码。
静态库:.a和.framework
动态库:.dylib和.framework(iOS9取消了.dylib,使用.tbd替代)
2、静态库和动态库在使用上的区别:
静态库:链接时,静态库中使用的文件会被完整的复制到可执行文件中,被多次使用就有多次冗余拷贝
动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存
注意:项目中如果使用了自制的动态库,不能被上传到AppStore。
因为:动态库存在于系统中,可以更新,不用上传AppStore就可以(Apple不赚钱了),存在较大风险(注入攻击,冒充系统类库,APP之间传值,因为用的都是相同的东西)。
3、静态库创建:
4、静态库目录介绍:
、
5、新建项目并导入静态库:
6、使用导入的静态库的方法:
7、添加自定义源文件的时候,还需要手动添加其头文件,同样,添加的资源文件,也需要手动导入:
手动导入:
我们再来看看生成的文件,可以看到已经有了自定义源文件的头文件了:
8、使用静态库的创建图片方法和资源文件创建图片并显示:
9、注意了啊,如果项目中的资源文件和静态库中的资源文件同名的时候,将会使用项目中的资源文件:
10、那怎么让显示静态库中的资源呢:
很简单:把资源放到一个Bundle包中,然后把Bundle包添加到静态库中,并使用“步骤7”,手动导入Bundle包,然后使用资源时:“Bundle包/资源名”即可。
资源放入Bundle包并把Bundle包拖入项目中:
手动导入Bundle包:
生成静态库:
11、使用“Bundle包路径/资源名”引用静态库的资源文件:
12、重新生成静态库文件,并导入项目中,调用静态库代码,可以看到,这时候创建的图片,就是静态库中的图片
静态库介绍与简单演练及同名资源冲突解决(.a格式的静态库)的更多相关文章
- 机器学习 python库 介绍
开源机器学习库介绍 MLlib in Apache Spark:Spark下的分布式机器学习库.官网 scikit-learn:基于SciPy的机器学习模块.官网 LibRec:一个专注于推荐算法的j ...
- linux学习 建立静态库,动态库,写简单的makefile
建立静态库 建立四个文件 bin(可运行文件),lib(库),include(头文件),src(放源文件) 这里的起的库明为add 在src文件里运行 1)gcc -c add.c //编译add.c ...
- 简单易用的图像解码库介绍 —— stb_image
原文链接:简单易用的图像解码库介绍 -- stb_image 说到图像解码库,最容易想起的就是 libpng 和 libjpeg 这两个老牌图像解码库了. libpng 和 libjpeg 分别各自对 ...
- C++著名类库和C++标准库介绍
C++著名类库 1.C++各大有名库的介绍——C++标准库 2.C++各大有名库的介绍——准标准库Boost 3.C++各大有名库的介绍——GUI 4.C++各大有名库的介绍——网络通信 5.C++各 ...
- state Threads 开源库介绍
译文在后面. State Threads for Internet Applications Introduction State Threads is an application library ...
- PHP中GD库是做什么用的? PHP GD库介绍11111111
什么是gd库? gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片. 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据 ...
- 【转帖】Windows与Linux系统下的库介绍
Windows与Linux系统下的库介绍 http://embeddedlinux.org.cn/emb-linux/entry-level/200903/12-553.html 库的定义 库文件是一 ...
- DBoW2库介绍
DBoW2库是University of Zaragoza里的Lopez等人开发的开源软件库. 由于在SLAM回环检测上的优异表现(特别是ORB-SLAM2),DBoW2库受到了广大SLAM爱好者的关 ...
- iOS 蓝牙开发(四)BabyBluetooth蓝牙库介绍(转)
转载自:http://www.cocoachina.com/ios/20151106/14072.html 原文作者:刘彦玮 BabyBluetooth 是一个最简单易用的蓝牙库,基于CoreBlue ...
随机推荐
- Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...
- [DeviceOne开发]-do_LinearLayout组件使用技巧
一.摘要 今天跟大家主要来介绍一下DeviceOne中的do_linearlayout这个布局,在DeviceOne开发中,do_linearlayout这个布局是相当重要. 现在给大家来总结一下. ...
- 透过浏览器看HTTP缓存
作为前端开发人员,对于我们的站点或应用的缓存机制我们能做的似乎不多,但这些却是与我们关注的性能息息相关的部分,站点没有做任何缓存机制,我们的页面可能会因为资源的下载和渲染变得很慢,但大家都知道去找前端 ...
- JavaScript的基准测试-不服跑个分?
原文:Bulletproof JavaScript benchmarks 做JavaScript的基准测试并没有想的那么简单.即使不考虑浏览器差异所带来的影响,也有很多难点-或者说陷阱需要面对. 这是 ...
- SqlHelper中IN集合场景下的参数处理
我手头有个古老的项目,持久层用的是古老的ADO.net.前两天去昆明旅游,其中的一个景点是云南民族村,通过导游介绍知道了一个古老的民族——基诺族,“基”在这个族内代表舅舅,“基诺”意为“跟在舅舅后边” ...
- EF Core 数据库迁移(Migration)
工具与环境介绍 1.开发环境为vs 2015 2.mysql EF Core支持采用 Pomelo.EntityFrameworkCore.MySql 源代码地址(https://github. ...
- setTimeout那些事儿
一.setTimeout那些事儿之单线程 一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序. 但是,不知道大家有疑问没——就是我们 ...
- scikit-learn Adaboost类库使用小结
在集成学习之Adaboost算法原理小结中,我们对Adaboost的算法原理做了一个总结.这里我们就从实用的角度对scikit-learn中Adaboost类库的使用做一个小结,重点对调参的注意事项做 ...
- Oracle数据库验证IMP导入元数据是否会覆盖历史表数据
场景:imp导入数据时,最终触发器报错退出,并未导入存储过程.触发器.函数. 现在exp单独导出元数据,然后imp导入元数据,验证是否会影响已导入的表数据. 测试环境:CentOS 6.7 + Ora ...
- RPC框架实现 - 通信协议篇
RPC(Remote Procedure Call,远程过程调用)框架是分布式服务的基石,实现RPC框架需要考虑方方面面.其对业务隐藏了底层通信过程(TCP/UDP.打包/解包.序列化/反序列化),使 ...