首先声明: 本人屌丝一枚,如有不对不妥之处,请大牛指正!
1.静态库工程的建立:
Xcode New一个新的PRoject,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个名为:MaxLib 的工程。
添加简单的两个方法"- (void)max:(int)a :(int )b;"和"+ (void)print;"做示例 ;在*.m文件中的实现这两个方法 。这样编译出来的libMaxLib.a 就可以被其他的IOS小伙伴进行调用了。
方法的简单实现:
#import "MaxLib.h"
@implementation MaxLib
- (void)max:(int)a :(int)b
{
a > b ?(NSLog(@"Max is %d",a)) :(NSLog(@"Max is %d",b));
}
+ (void)print
{
NSLog(@"Hello");
}
@end
3.注意要编译两次
一次是选择真机编译;一次模拟器编译;注意设置版本如下所示;编译之后libMaxLib.a会变成黑色;
4.查看.a文件
libMaxLib.a 上右键show in finder 可以看到该文件;
返回上级目录可以看到右边目录下是模拟器用的 libMaxLib.a文件;
5,将真机和模拟器用的两个.a 合并成为一个通用的.a文件
在终端输入命令 : lipo -create /..... *.a /...../*.a -output /Users/..../*.a ;注意自己文件所在的路径
( 注意 可以使用命令 :lipo -info /..... *a 查看.a 所支持的架构 e.g. :
hezhujindeMacBook-Pro:~ hezhujin$ lipo -info /Users/hezhujin/Desktop/libMaxLib.a
Architectures in the fat file: /Users/hezhujin/Desktop/libMaxLib.a are: i386 armv7 armv7s arm64 )
6.最后我们来就可以简单使用自己创建的静态库了
新建工程,导入我们静态库工程的MaxLib.h 文件,然后在这个工程的Build Phases的Link Binary With Library里添加合并的 libMaxLib.a 文件;
简单代码示例
#import "HZJViewController.h"
#import "MaxLib.h"
@interface HZJViewController ()
@end
@implementation HZJViewController
- (void)viewDidLoad
{
[super viewDidLoad];
int a = 'A' ;
int b = 100 ;
[MaxLib print];
MaxLib * maxlib = [[MaxLib alloc]init];
[maxlib max:a :b ];
// Do any additional setup after loading the view, typically from a nib.
}
运行结果:
2014-06-22 21:26:37.136 TestView[2572:60b] Hello
2014-06-22 21:26:37.137 TestView[2572:60b] Max is 100
补充:要支持arm64 ,选择64位模拟器编译得到.a 在和之前的合并的.a 合并成新的.a 这样在64 位模拟器就可以运行了!!
新闻热点
疑难解答