iOS Xcode制作静态库详解

移动开发 iOS
一些iOS开发,有开发静态库的需求,本身iOS的开发,只允许静态库或者Framework。在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法。不过Framework这样的框架,估计也是类似动态库的实现,不过没有具体研究过,后续继续深入研究。
注意:首先确保你的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文件
  1. #import <UIKit/UIKit.h>   
  2.        
  3. @interface MyView : UIView   
  4.        
  5. @end   

创建视图类的.m文件

显示的图片资源为通过URL下载后谷歌的LOGO,点击该LOGO视图后程序将打开百度的主页。
  1. #import "MyView.h"   
  2. @implementation MyView         
  3. - (id)initWithFrame:(CGRect)frame   
  4.     {   
  5.         //初始化视图位置   
  6.         self = [super initWithFrame:frame];   
  7.         if (self) {   
  8.                
  9.         }   
  10.         return self;   
  11.     }     
  12. - (void)drawRect:(CGRect)rect   
  13.     {   
  14.         //这里创建一个图片视图   
  15.         UIImage *image=[[UIImage alloc]initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com.hk/intl/zh-CN/images/logo_cn.png"]]];   
  16.         [image drawInRect:CGRectMake(00,self.frame.size.width , self.frame.size.height)];   
  17.         [image release];   
  18.     } 
  19. -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event   
  20.     {   
  21.       //点击视图后打开网页   
  22.       [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com"]];   
  23.     }   
  24. @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,触摸点击该视图后打开百度的首页。

调用静态库的方法如下:

  1. #import "ViewController.h"    
  2. #import "MyView.h"    
  3. @implementation ViewController    
  4. - (void)didReceiveMemoryWarning    
  5.     {    
  6.         [super didReceiveMemoryWarning];    
  7.         // Release any cached data, images, etc that aren't in use.    
  8.     }     
  9.     #pragma mark - View lifecycle    
  10. - (void)viewDidLoad    
  11.     {    
  12.         [super viewDidLoad];    
  13.         //创建静态库视图    
  14.         MyView *myView = [[MyView alloc] initWithFrame: CGRectMake(00120100)];    
  15.         //将静态库视图添加至窗口当中    
  16.         [self.view addSubview:myView];    
  17.         [myView release];    
  18.     }    
  19. - (void)viewDidUnload    
  20.     {    
  21.         [super viewDidUnload];    
  22.         // Release any retained subviews of the main view.    
  23.         // e.g. self.myOutlet = nil;    
  24.     }    
  25. @end 

OK ,到这一步我们已经将静态库顺利的应用在模拟器当中,下面我们学习如何将静态库应用在真机当中。我们再次回到制作静态库的工程当中,如图打开工程后编译环境选择IOS Device,然后构建构成即可完成。

使用鼠标右键找到libSDKlib.a,这时候Debug-iphoneos / libSDKlib.a 就是可以在真机上编辑的静态库。
 
最后将libSDKLib.a 与MyView.h拖拽添加至程序当中,连接上真机运行工程即可在真机上看到效果了。值得注意的是模拟器和真机用的libSDKLib.a必需要严格的区分开,否则程序会报错。
责任编辑:闫佳明 来源: oschina
相关推荐

2011-08-18 10:47:48

Xcode 4静态库

2011-08-02 14:15:05

XCode 静态 链接库

2011-07-22 16:15:11

IOS 静态类

2015-09-01 10:37:54

ios静态库开发

2011-07-06 10:22:31

XCode IOS object-C

2013-04-08 10:47:42

Xcode静态代码分析

2015-09-11 11:02:23

ios静态库开发

2011-07-07 16:08:41

2011-07-19 15:44:18

Xcode 卸载

2011-07-28 14:31:55

Xcode 调试 异常

2011-08-03 14:54:09

2021-12-06 11:51:43

静态库动态库C语言

2011-07-26 14:44:53

调试 Xcode

2011-07-20 10:59:46

2011-08-29 09:33:24

WindowsQt库静态

2011-05-11 10:39:51

XcodeiOS

2012-05-10 08:29:46

XcodeiOSPhoneGap

2011-09-06 16:30:32

iOS系统静态链接库

2013-07-25 15:19:23

iOS开发学习Xcode打包framiOS开发

2011-07-22 18:41:11

Xcode 文档 脚本
点赞
收藏

51CTO技术栈公众号