IOS程式是由Objective-c語言構成,而是Objective-c語言中每一個類又分成 .h .m 檔案。靜态庫可以将這些程式的類封裝成一個.a檔案,第三方應用程式隻需要拿到這個.a檔案和代碼對應的.h檔案即可使用靜态庫中封裝的方法。總的來說IOS靜态庫适合去制作第三方提供的SDK,廢話不多說了我們直接進正題。 首先打開Xcode4建立一個靜态庫工程,如下圖選擇Framework&Library ->Cocoa Touch Static Library (建立靜态庫),點選右下角按鈕“next”繼續完成建立。
工程建立完畢後,我們開始編寫代碼。我們建立一個UIView類用來顯示一張圖檔,并且點選該視圖後打開一個網址。
建立視圖類的.h檔案
1 | #import <UIKit/UIKit.h> |
3 | @interface MyView : UIView |
建立視圖類的.m檔案 顯示的圖檔資源為通過URL下載下傳後谷歌的LOGO,點選該LOGO視圖後程式将打開百度的首頁。
03 | @implementation MyView |
05 | - (id)initWithFrame:(CGRect)frame |
08 | self = [super initWithFrame:frame]; |
15 | - ( void )drawRect:(CGRect)rect |
18 | UIImage *image=[[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@ "http://www.google.com.hk/intl/zh-CN/images/logo_cn.png" ]]]; |
19 | [image drawInRect:CGRectMake(0, 0,self.frame.size.width , self.frame.size.height)]; |
23 | -( void )touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event |
26 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@ "http://www.baidu.com" ]]; |
到這一步靜态庫中的代碼我們已經寫完,現在我們開始制作靜态庫。靜态庫的制作方法可分為兩種:第一種為在真機上使用的靜态庫,第二種為在模拟器中使用的靜态庫。這兩種方法制作起來有點小差別,請大家一定看好了,别眨眼睛喔,我們開始從模拟器入手。 如圖,先選擇模拟器iPhone 5.0 Simulator,如果你的XCODE4不是IOS5版本那麼你将沒有這個選項,然後Build工程,建構工程完畢後libSDKLib.a靜态庫檔案遍生成了出來, 選擇該檔案滑鼠右鍵找到它。
找到檔案以後,預設為Debug-iphoneos / libsdklib.a ,但是這個檔案是不能在模拟器中使用的,并且它也不能在真機中使用。你需要選擇下面Debug-iphoneosimulator / libsdklib.a這個檔案,将libSDKLib.a與對應MyView.h頭檔案拖拽入使用它的工程當中。
接下來建立一個普通的IOS工程,先選擇模拟器運作 iPhone5.0 Simulator ,然後将libSDKLib.a 與MyView.h拖拽添加至程式當中即可。
運作工程即可看到效果,本例中通過URL加載了一張谷歌的LOGO,觸摸點選該視圖後打開百度的首頁。
調用靜态庫的方法如下:
01 | #import "ViewController.h" |
03 | @implementation ViewController |
05 | - ( void )didReceiveMemoryWarning |
07 | [super didReceiveMemoryWarning]; |
08 | // Release any cached data, images, etc that aren't in use. |
11 | #pragma mark - View lifecycle |
17 | MyView *myView = [[MyView alloc] initWithFrame: CGRectMake(0, 0, 120, 100)]; |
19 | [self.view addSubview:myView]; |
23 | - ( void )viewDidUnload |
25 | [super viewDidUnload]; |
26 | // Release any retained subviews of the main view. |
27 | // e.g. self.myOutlet = nil; |
OK ,到這一步我們已經将靜态庫順利的應用在模拟器當中,下面我們學習如何将靜态庫應用在真機當中。我們再次回到制作靜态庫的工程當中,如圖打開工程後編譯環境選擇IOS Device,然後建構構成即可完成。
使用滑鼠右鍵找到libSDKlib.a,這時候Debug-iphoneos / libSDKlib.a 就是可以在真機上編輯的靜态庫。
最後将libSDKLib.a 與MyView.h拖拽添加至程式當中,連接配接上真機運作工程即可在真機上看到效果了。值得注意的是模拟器和真機用的libSDKLib.a必需要嚴格的區分開,否則程式會報錯。