https://www.cnblogs.com/JustForHappy/p/5773039.html
一,静态库和动态库的区别在这里就不说了,个人感觉如果是自己封装提供别人下载的话应该是静态库比较方便.(本文就是创建静态库及使用)
二,使用Xcode创建静态库
1,首先创建静态库工程
xcode ---->选择IOS下的Framework&Library ----->选择Cocoa Touch Static Library (记得这里确定是IOS下的,不是watchOS下的,小编第一次就是不注意创建错.)
2,创建完成之后,我们可以看一下界面顺便再.h和.m里面分别创建方法和输出信息
.h界面 创建方法
1 #import <Foundation/Foundation.h> 2 3 @interface logNews : NSObject 4 -(void)logNewsA; 5 +(void)logNewsB; 6 @end
.m界面实现方法
1 #import "logNews.h" 2 3 @implementation logNews 4 -(void)logNewsA{ 5 NSLog(@"--------A"); 6 } 7 8 +(void)logNewsB{ 9 NSLog(@"--------B"); 10 } 11 12 @end
3,点击 Build Phases -Copy Files 点击左下角的+号,会弹出项目中所有的文件.h和.m文件,这里的意思是要你添加你完成封装之后让别人能够看到的文件,这里我只选择 .h文件,选中文件之后点击add进行添加 如图(我添加的是logNews.h)
注:我在一篇帖子中看到过,如果项目中使用类目的话,会碰到链接问题,解决的办法就是需要同时在生成静态库的工程和使用静态库的工程中使用“-all_load”编译选项,即在对应target的"Build Settings"中的“Other Linker Flags”选项添加“-all_load”,使用静态库的工程中是一定要加该编译选项的!至于生成静态库的工程中加不加没有试过,不过建议还是加上该编译选项.下面是原帖子地址:
(文/Shelin(简书作者)
原文链接:http://www.jianshu.com/p/656ba8094d1d)
4,选择Edit Scheme 将BuildConfiguration下的Debug更改为Release之后close
5,之后进行模拟器编译和真机编译,你会发现左侧的liblogNews.a文件由原来的红色变为现在的黑色
6,将模拟器.a文件和设备真机.a文件合成一个文件
首先找到对应项目的模拟器.a文件和真机.a文件
(1)打开终端在终端输入 open /Users/smile/Library/Developer/Xcode/DerivedData/ (smile 是自己的电脑名字)在打开的文件夹中找到自己对应的文件,logNews-hiakdvdtfjbhsjanpxkvmfmavmcb ------->Build ------>Products 在里面我们看到两个文件夹,这里面就是模拟器.a文件和真机.a问价(这里我就不截图了)
(2)在终端输入 lipo -create 模拟器.a文件的路径 真机.a文件的路径 -output 合并后的保存路径 我们就得到合并之后的.a文件
三,静态库的使用
1,新建文件夹命名为logNewsSDK,把我们获得的.a文件和我们需要显示的.h文件拷贝进去,就行了
2,把logNewsSDK导入新建的项目中.
(1),首先导入.h文件
(2)创建对象,创建对象之后,调用加好方法和减号方法
1 logNews * p = [[logNews alloc]init]; 2 [p printA]; 3 [Print printB];
3,最后输出结果