天天看點

IOS靜态庫生成

IOS程式是由Objective-c語言構成,而是Objective-c語言中每一個類又分成 .h .m 檔案。靜态庫可以将這些程式的類封裝成一個.a檔案,第三方應用程式隻需要拿到這個.a檔案和代碼對應的.h檔案即可使用靜态庫中封裝的方法。總的來說IOS靜态庫适合去制作第三方提供的SDK,廢話不多說了我們直接進正題。 首先打開Xcode4建立一個靜态庫工程,如下圖選擇Framework&Library ->Cocoa Touch Static Library (建立靜态庫),點選右下角按鈕“next”繼續完成建立。

IOS靜态庫生成

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

建立視圖類的.h檔案

1

#import <UIKit/UIKit.h>

2

3

@interface MyView : UIView

4

5

@end

建立視圖類的.m檔案 顯示的圖檔資源為通過URL下載下傳後谷歌的LOGO,點選該LOGO視圖後程式将打開百度的首頁。

01

#import "MyView.h"

02

03

@implementation MyView

04

05

- (id)initWithFrame:(CGRect)frame

06

{

07

//初始化視圖位置

08

self = [super initWithFrame:frame];

09

if

(self) {

10

11

}

12

return

self;

13

}

14

15

- (

void

)drawRect:(CGRect)rect

16

{

17

//這裡建立一個圖檔視圖

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)];

20

[image release];

21

}

22

23

-(

void

)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

24

{

25

//點選視圖後打開網頁

26

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@

"http://www.baidu.com"

]];

27

}

28

29

@end

到這一步靜态庫中的代碼我們已經寫完,現在我們開始制作靜态庫。靜态庫的制作方法可分為兩種:第一種為在真機上使用的靜态庫,第二種為在模拟器中使用的靜态庫。這兩種方法制作起來有點小差別,請大家一定看好了,别眨眼睛喔,我們開始從模拟器入手。 如圖,先選擇模拟器iPhone 5.0 Simulator,如果你的XCODE4不是IOS5版本那麼你将沒有這個選項,然後Build工程,建構工程完畢後libSDKLib.a靜态庫檔案遍生成了出來, 選擇該檔案滑鼠右鍵找到它。

IOS靜态庫生成

找到檔案以後,預設為Debug-iphoneos / libsdklib.a ,但是這個檔案是不能在模拟器中使用的,并且它也不能在真機中使用。你需要選擇下面Debug-iphoneosimulator / libsdklib.a這個檔案,将libSDKLib.a與對應MyView.h頭檔案拖拽入使用它的工程當中。

IOS靜态庫生成

接下來建立一個普通的IOS工程,先選擇模拟器運作 iPhone5.0 Simulator ,然後将libSDKLib.a 與MyView.h拖拽添加至程式當中即可。

IOS靜态庫生成

運作工程即可看到效果,本例中通過URL加載了一張谷歌的LOGO,觸摸點選該視圖後打開百度的首頁。

IOS靜态庫生成
IOS靜态庫生成

調用靜态庫的方法如下:

01

#import "ViewController.h"

02

#import "MyView.h"

03

@implementation ViewController

04

05

- (

void

)didReceiveMemoryWarning

06

{

07

[super didReceiveMemoryWarning];

08

// Release any cached data, images, etc that aren't in use.

09

}

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

@end

OK ,到這一步我們已經将靜态庫順利的應用在模拟器當中,下面我們學習如何将靜态庫應用在真機當中。我們再次回到制作靜态庫的工程當中,如圖打開工程後編譯環境選擇IOS Device,然後建構構成即可完成。

IOS靜态庫生成

使用滑鼠右鍵找到libSDKlib.a,這時候Debug-iphoneos / libSDKlib.a 就是可以在真機上編輯的靜态庫。

IOS靜态庫生成

最後将libSDKLib.a 與MyView.h拖拽添加至程式當中,連接配接上真機運作工程即可在真機上看到效果了。值得注意的是模拟器和真機用的libSDKLib.a必需要嚴格的區分開,否則程式會報錯。