06.iOS 静态库的封装和使用

@(〓〓 iOS-实用技术)[静态库/动态库封装]


目录

  • 06.iOS 静态库的封装和使用
  • 1.iOS 库的基本概念
    • 静态库和动态库
  • 2.静态库的封装
    • .a静态库的封装
      • 编译Debug/Release 模拟器/真机版本的静态库
      • 合并静态库
    • .framework静态库的封装
      • .framework静态库的使用

1.iOS 库的基本概念

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


静态库和动态库

  • 1.iOS中静态库和动态库文件的后缀名

    • 静态库文件后缀名: .a.framework
    • 动态库文件后缀名: .dylib.framework
  • 2.静态库和动态库的区别

    • 动态库则不会复制, 只有一份. 程序运行时动态加载到内存; 系统只加载一次, 多个程序共用, 节省内存;
    • 但是项目中如果使用到自己的动态库, 不允许上架!
      但是WWDC2014上公布的苹果对ios8开放动态加载dylib的接口,也就是说 开放了动态库挂载.
    • 静态库在链接时, 会被完整的复制到可执行文件中; 被多次使用, 就有多份拷贝;

2.静态库的封装

.a静态库的封装

  • 1.创建工程选择iOS/Framework & Library,选择Coaoa Touch Static Library
01.创建工程.png

  • 2.设置对外公开的头文件
02.设置对外公开的头文件.png

  • 3.设置让所有架构都能正常编译和使用
03.设置让所有架构都能正常编译和使用.png

  • 5.创建一个Log类,实现接口方法,并在.h文件中对外提供接口方法
// Log.h文件中提供接口
+ (void)wxLog;

// Log.m文件中实现方法
+ (void)wxLog
{
    NSLog(@"Test Lib");
}
04.创建一个Log类.png

  • 6.使用快捷键command + b编译静态库(当前运行选择为模拟器),编译成功后找到库存储路径.

进入静态库生成的路径中

05.静态库生成的路径.png

以上操作弹出窗口后进入Build/Products/Debug-iphonesimulator文件夹中,.a的库文件对外公开的头文件就存放在该目录下.因为刚才是处于Debug模式下选择模拟器运行环境,所以生成的Debug-iphonesimulator文件夹

06.Build:Products:Debug-iphonesimulator文件夹.png

  • 7.确保生成的静态库能在你所有模拟器上运行,先查看静态库支持的平台.
    • 使用lipo -info查看库所支持的架构. i386 x86_64: 表示能在所有模拟器上运行.
    • 模拟器架构: iPhone 4s - iPhone 5是i386架构,iPhone 5s - iPhone 6s Plus是x86_64架构.
07.查看库所支持的架构.png

  • 8.静态库的使用.只需将生成的.a文件和.h文件拖入到测试静态库的工程即可使用静态库.
08.静态库的使用.png
09.静态库的使用.png

编译Debug/Release 模拟器/真机版本的静态库

  • 1.设置要编译成Debug还是Release版本的静态库.如果是要生成Release就选择Release
10.设置要编译成Debug还是Release版本的静态库.png
11.选择对应的版本.png

  • 2.设置要编译成真机还是模拟器版的静态库
12.设置要编译成真机.png
  • 3.如果四种情况的静态库都进行编译,则会生成以下四个文件夹
13.四种情况的静态库都进行编译.png

合并静态库

  • 1.使用lipo -create ... -output ... 合并静态库.最终合并的静态库的大小相当于Debug Device.a和Debug Simulator.a的总和.
14.合并静态库.png

.framework静态库的封装

  • 1.创建工程选择iOS/Framework & Library,选择Coaoa Touch Framework
15.创建工程.png
  • 2.删除自动生成的头文件.注意: Info.plist不能删除

16.删除自动生成的头文件.png

  • 3.创建Tool类,并对应提供log类方法,实现log类方法
// Tool.h文件中提供接口
+ (void)log;

// Tool.m文件中实现方法
+ (void)log
{
    NSLog(@"framework Test");
}

  • 4.设置要生成的.framework文件为静态库
17.设置要生成的.framework文件为静态库.png

  • 5.设置支持所有架构
18.设置支持所有架构.png

  • 6.设置要公开的所有头文件
19.设置要公开的所有头文件.png

.framework静态库的使用

  • 1.创建一个测试静态库的工程,生成的.framework的静态库拖入到工程
20.静态库拖入到工程.png
  • 2.使用尖括号<>导入头文件之后就能正常使用.framework的静态库
    • 注意: 导入头文件为 #import <Framework/Tool.h>
21.使用.framework的静态库.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 11,871评论 3 42
  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 4,170评论 0 4
  • 介绍 动态库形式:.dylib和.framework 静态库形式:.a和.framework 动态库和静态库的区别...
    齐滇大圣阅读 46,130评论 18 252
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,438评论 25 707
  • 已完成 【午间话题】熊二 打卡期间有什么值得回忆的事情? 1、一次较时间晚打卡,因为哄孩子睡觉结果把自己也哄睡着了...
    捡到蜜罐的熊阅读 164评论 0 0