iOS SDK开发之 .a静态库
注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤。
环境:xcode 9.2
下面我们开始操作:
第一步:创建一个静态库工程
打开Xcode,选择新建一个项目,新建Cocoa Touch Static Library。名称看自己需求起名,我直接叫MYSDK。
创建完成后已经有两个文件MMYSDK.h和MYSDK.m,如果想要新实现方法封装成SDK可以直接在在MYSDK这个类里面实现,也可以删除这两个文件将自己已经实现功能的类添加到工程里面。(这里只是写生成.a静态库的步骤,所以直接在MYSDK类里面实现)
在类里面实现弹出一个UIAlertView。
第二步:生成.a静态库
静态库分为手机和模拟器两种(手机端的只有手机能调用,模拟器的只有模拟器能调用)
2.1、生成模拟器使用静态库,随意选择一个模拟器,然后编译工程(快捷键command + B)。这时候已经生成只在模拟器能用的.a静态库libMYSDK.a。
2.2、同样的道理选择Generic iOS Device生成真机能用的.a静态库
右键libMYSDK,选择Show in Finder 在Products文件夹下有两个文件夹Debug-iphoneos和Debug-iphonesimulator,分别是真机和模拟器对应的静态库。
第三步:合成通用.a静态库
将真机和模拟器的.a静态库合并成一个通用的静态库,在终端完成。使用命令行:lipo -create 真机.a静态库路径 模拟器.a静态库路径 -output 合成静态库路径 (直接拖拽.a文件路径就可出现在终端)。
至此,最终的合成库已经生成在桌面,可以直接拿来用了。需要注意的是需要将真机或模拟器任意.a静态库文件夹下的include/MYSDK文件夹中的.h头文件一起加入应用工程。
第四步:.a静态库的使用
4.1、随意创建一个工程,将生成的.a静态库和头文件放到一个文件夹中添加到工程(这里只是说明静态库的使用,请忽略工程目录结构)。
特别说明:如果静态库封装多个类,将所有类的头文件集中添加到一个.h文件,这样在使用的时候只需导入这一个头文件就行。
4.2、在ViewController里面导入头文件并且调用分装的方法。
4.3、分别在模拟器和真机运行(iPhone X模拟器和iPhone 6S真机),运行结果如下。
至此,大功告成
iOS SDK开发之 .a静态库的更多相关文章
- iOS SDK开发之 .framework静态库
查看.a静态库的生成及使用单击此处 注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤.环境:xcode 9.2下面我们开始操作: 第一步:创建一个静态库工程 ...
- iOS开发之*.a静态库注意事项
以*.a静态库的形式引入工程的(比如:libUploadLib.a),*.a里面的class有category形式实现时,除了在工程Target的 Build Phases里面的 Link Binar ...
- iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...
- iOS多线程开发之GCD(中篇)
前文回顾: 上篇博客讲到GCD的实现是由队列和任务两部分组成,其中获取队列的方式有两种,第一种是通过GCD的API的dispatch_queue_create函数生成Dispatch Queue:第二 ...
- iOS多线程开发之NSOperation - 快上车,没时间解释了!
一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...
- iOS项目开发常用功能静态库
YHDeveloperTools iOS项目开发常用功能静态库 查看源码 功能方法: 1.字符检查 [NSString checkStringWithType:Email andTargetStrin ...
- iOS游戏开发之UIDynamic
iOS游戏开发之UIDynamic 简介 什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ...
- iOS多线程开发之NSOperation
一.什么是NSOperation? NSOperation是苹果提供的一套多线程解决方案.实际上NSOperation是基于GCD更高一层的封装,但是比GCD更加的面向对象.代码可读性更高.可控性更强 ...
- iOS多线程开发之GCD(死锁篇)
上篇和中篇讲解了什么是GCD,如何使用GCD,这篇文章将讲解使用GCD中将遇到的死锁问题.有兴趣的朋友可以回顾<iOS多线程开发之GCD(上篇)>和<iOS多线程开发之GCD(中篇) ...
随机推荐
- 将div生成图片并下载下来
//文件需要引入html2canvas.js.jquery.js function downLoadImg(){ var element = $(".orgchart"); // ...
- urlencode编/解码
from urllib.parse import urlencode, quote, unquote # urlencode方法参数是字典 body = { "content": ...
- centos--软件源--本地软件源---离线安装
一.软件源配置文件 1./etc/yum.conf 配置文件 [main] cachedir=/var/cache/yum #yum下载的RPM包的缓存目录 keepcache= #缓存是否保存,1保 ...
- Eclipse集成开发环境搭建
gdbserver安装: 安装gdb-server的环境变量要放在arm-linux-gcc的环境的前面,因为arm-linux-gcc的安装包里面也有gdb,linux系统在找指令时从/root/. ...
- 裸机开发体验之led快速体验
[root@promote led]# arm-linux-gcc -g -c led.S[root@promote led]# lsled.lds led.o led.S Makefile[root ...
- 网页图片失效自动替换图片地址js代码
当你网页中的图片失效之后它会显示你预先设定好的默认图片,而不是显示为一个大大的红叉叉. js脚本如下: <script language="javascript"> v ...
- P1086 花生采摘题解
这道题只是普通的模拟,不是贪心! 重点在于这句话:“然后再找出剩下的植株里花生最多的,去采摘它的花生”. 也就是,你下一个必须找到剩下花生最多的,而不是按照贪心思想来考虑在限定时间内的最优解 那么,应 ...
- Java并发编程实战 第6章 任务并行 第7章 取消与关闭
ExecutorCompletionService CompletionService用来接收一个Executor的执行结果,将已经完成任务,放置在可使用 take 访问的队列上. 大概用法: Exe ...
- 【洛谷P1220】关路灯
题目有点难描述,内容请直接看原题.. 题解: 可以发现人在关路灯时无论走什么样的路径,从宏观上来看被关的灯总是构成一段包含初始点的连续区间.比如要关掉下标为 l (l < st)的灯,则一定要先 ...
- CSS基础-如何用border写三角形?
1.常用的border的单值属性(border指的是边框.) /*边框样式属性*/ border-style: solid; /*边框颜色*/ border-color: #06a43a; /*边框宽 ...