首先聲明: 本人屌絲一枚,如有不對不妥之處,請大牛指正!
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 位模擬器就可以運行了!!
新聞熱點
疑難解答