注意:首先確保你的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文件
- #import <UIKit/UIKit.h>
-
- @interface MyView : UIView
-
- @end
建立視圖類的.m文件
顯示的圖片資源爲經過URL下載後谷歌的LOGO,點擊該LOGO視圖後程序將打開百度的主頁。
- #import "MyView.h"
-
- @implementation MyView
-
- - (id)initWithFrame:(CGRect)frame
- {
- //初始化視圖位置
- self = [super initWithFrame:frame];
- if (self) {
-
- }
- return self;
- }
-
-
- - (void)drawRect:(CGRect)rect
- {
- //這裏建立一個圖片視圖
- UIImage *image=[[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com.hk/intl/zh-CN/images/logo_cn.png"]]];
- [image drawInRect:CGRectMake(0, 0,self.frame.size.width , self.frame.size.height)];
- [image release];
- }
-
-
- -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
- {
- //點擊視圖後打開網頁
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com"]];
- }
-
- @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,觸摸點擊該視圖後打開百度的首頁。
調用靜態庫的方法以下:
- #import "ViewController.h"
- #import "MyView.h"
- @implementation ViewController
-
- - (void)didReceiveMemoryWarning
- {
- [super didReceiveMemoryWarning];
- // Release any cached data, images, etc that aren't in use.
- }
-
- #pragma mark - View lifecycle
-
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- //建立靜態庫視圖
- MyView *myView = [[MyView alloc] initWithFrame: CGRectMake(0, 0, 120, 100)];
- //將靜態庫視圖添加至窗口當中
- [self.view addSubview:myView];
- [myView release];
- }
-
- - (void)viewDidUnload
- {
- [super viewDidUnload];
- // Release any retained subviews of the main view.
- // e.g. self.myOutlet = nil;
- }
-
-
- @end
OK ,到這一步咱們已經將靜態庫順利的應用在模擬器當中,下面咱們學習如何將靜態庫應用在真機當中。咱們再次回到製做靜態庫的工程當中,如圖打開工程後編譯環境選擇IOS Device,而後構建構成便可完成。
使用鼠標右鍵找到libSDKlib.a,這時候Debug-iphoneos / libSDKlib.a 就是能夠在真機上編輯的靜態庫。
最後將libSDKLib.a 與MyView.h拖拽添加至程序當中,鏈接上真機運行工程便可在真機上看到效果了。值得注意的是模擬器和真機用的libSDKLib.a必須要嚴格的區分開,不然程序會報錯。