IOS XCODE製做靜態庫詳解

注意:首先確保你的XCODE4使用IOS5,不然請下載IOS5在繼續閱讀。


IOS程序是由Objective-c語言構成,而是Objective-c語言中每個類又分紅 .h .m 文件。靜態庫能夠將這些程序的類封裝成一個.a文件,第三方應用程序只須要拿到這個.a文件和代碼對應的.h文件便可使用靜態庫中封裝的方法。總的來講IOS靜態庫適合去製做第三方提供的SDK,廢話很少說了咱們直接進正題。

首先打開Xcode4建立一個靜態庫工程,以下圖選擇Framework&Library ->Cocoa Touch Static Library (建立靜態庫),點擊右下角按鈕「next」繼續完成建立。
        


工程建立完畢後,咱們開始編寫代碼。咱們建立一個UIView類用來顯示一張圖片,而且點擊該視圖後打開一個網址。

建立視圖類的.h文件

[cpp]  view plain copy
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface MyView : UIView  
  4.   
  5. @end  

建立視圖類的.m文件
顯示的圖片資源爲經過URL下載後谷歌的LOGO,點擊該LOGO視圖後程序將打開百度的主頁。

[cpp]  view plain copy
  1. #import "MyView.h"  
  2.   
  3. @implementation MyView  
  4.   
  5. - (id)initWithFrame:(CGRect)frame  
  6. {  
  7.     //初始化視圖位置  
  8.     self = [super initWithFrame:frame];  
  9.     if (self) {  
  10.           
  11.     }  
  12.     return self;  
  13. }  
  14.   
  15.   
  16. - (void)drawRect:(CGRect)rect  
  17. {  
  18.     //這裏建立一個圖片視圖  
  19.     UIImage *image=[[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com.hk/intl/zh-CN/images/logo_cn.png"]]];  
  20.     [image drawInRect:CGRectMake(0, 0,self.frame.size.width , self.frame.size.height)];  
  21.     [image release];  
  22. }  
  23.   
  24.   
  25. -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event  
  26. {  
  27.   //點擊視圖後打開網頁  
  28.   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com"]];  
  29. }  
  30.   
  31. @end  



到這一步靜態庫中的代碼咱們已經寫完,如今咱們開始製做靜態庫。靜態庫的製做方法可分爲兩種:第一種爲在真機上使用的靜態庫,第二種爲在模擬器中使用的靜態庫。這兩種方法制做起來有點小區別,請你們必定看好了,別眨眼睛喔, 咱們開始從模擬器入手。

如圖,先選擇模擬器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,觸摸點擊該視圖後打開百度的首頁。





調用靜態庫的方法以下:

[cpp]  view plain copy
  1. #import "ViewController.h"  
  2. #import "MyView.h"  
  3. @implementation ViewController  
  4.   
  5. - (void)didReceiveMemoryWarning  
  6. {  
  7.     [super didReceiveMemoryWarning];  
  8.     // Release any cached data, images, etc that aren't in use.  
  9. }  
  10.   
  11. #pragma mark - View lifecycle  
  12.   
  13. - (void)viewDidLoad  
  14. {  
  15.     [super viewDidLoad];  
  16.     //建立靜態庫視圖  
  17.     MyView *myView = [[MyView alloc] initWithFrame: CGRectMake(0, 0, 120, 100)];  
  18.     //將靜態庫視圖添加至窗口當中  
  19.     [self.view addSubview:myView];  
  20.     [myView release];  
  21. }  
  22.   
  23. - (void)viewDidUnload  
  24. {  
  25.     [super viewDidUnload];  
  26.     // Release any retained subviews of the main view.  
  27.     // e.g. self.myOutlet = nil;  
  28. }  
  29.   
  30.   
  31. @end  




OK ,到這一步咱們已經將靜態庫順利的應用在模擬器當中,下面咱們學習如何將靜態庫應用在真機當中。咱們再次回到製做靜態庫的工程當中,如圖打開工程後編譯環境選擇IOS Device,而後構建構成便可完成。






使用鼠標右鍵找到libSDKlib.a,這時候Debug-iphoneos / libSDKlib.a 就是能夠在真機上編輯的靜態庫。






最後將libSDKLib.a 與MyView.h拖拽添加至程序當中,鏈接上真機運行工程便可在真機上看到效果了。值得注意的是模擬器和真機用的libSDKLib.a必須要嚴格的區分開,不然程序會報錯。
相關文章
相關標籤/搜索