iOS 工程依赖---静态链接库
2015-07-30 18:02
706 查看
1 前言
有时候,我们要将某一层服用给其他的团队,公司或者个人,由于某些原因,不能提供源码,这时候就可以将业务层和数据持久层编写成静态链接库(staticli'brary或statically-linked library)。
转载请注明出处:http://blog.csdn.net/developer_zhang
2 详述
库是一些没有man函数的程序代码集合。出了静态库,还有动态链接库,他们之间的区别是:静态连接库可以编译到我们的执行代码中,应用程序可以在没有静态库的环境运行;动态链接库不能编译到我们的执行代码中,应用程序必须在有链接库文件的环境下运行。接下来我们就用上一篇博客的例子来学习一下如何制作和引入静态链接库,并且建立依赖关系。
2.1 构建可相互依赖的workSpace
首先我们要先建立一个workSpace工作空间用来管理各个项目之间的依赖:简单来说,Workspace就是一个容器,在该容器中可以存放多个你创建的Xcode Project, 以及其他的项目中需要使用到的文件。<http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+yrnTw1dvcmtzcGFjZbXEusO0ptPQo7o8YnI+CjEpwKnVuc/uxL+1xL/JytPT8qOsvLS/ydLU1Nq24Lj2z+7Ev9auvOTM+Neqo6zW2Lm5o6zSu7j2z+7Ev7/J0tTKudPDwe3Su7j2z+7Ev7XEyuQgs/aho1dvcmtzcGFjZbvhuLrU8Lj3uPZQcm9qZWN01q685Mzhuam499bWz+C7pdLAwLW1xLnYz7U7PGJyPgoyKbbguPbP7sS/1q685Lmyz+1CdWlsZMS/wryhozxicj4KPC9wPgo8aDI+Mi4yILm5vahQZXJzaXN0ZW5jZUxheWVyvrLMrL/iPC9oMj4KPHA+yLu6887Sw8e5ub2o1+67+bShtcS+ssysv+LSsr7Nysez1r7DsuO1xL6yzKy/4lBlcnNpc3RlbmNlTGF5ZXKjujwvcD4KPHA+1NrX87Lgv9Ww17Sm09K8/KOs0MK9qFByb2plY3SjujwvcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140228/20140228083215257.jpg"
width="700" height="600" alt="/">
创建Cocoa Touch Static Library静态库:
点击下一步创建:
删除没有用的两个文件PersistenceLayer.h PersistenceLayer.m:
把之前的项目的Note.h Note.m NoteDAO.h NoteDAO.m导入到项目之中:
点击项目Targets-》Build Phases-》Editor:
添加构建头Add Build Phases-》Add Copy Headers Build Phase:
添加头文件:
将两个头文件移动到Public中,使得外部Project可以访问得到:
然后Build该Project即可生成一个新的.a静态库:
2.3 构建BusinessLogicLayer
构建静态库的步骤同2.2,这里我们主要讲解一下业务层如何依赖持久层:项目构建中添加libPersistenceLayer.a静态库:
单击Add添加静态类库:
在Targets-》Build Setting中搜索Search Path-》User Header Search Paths添加依赖项目的头文件的搜索路径$(BUILT_PRODUCTS_DIR),并且设置为recursive :
然后Build(构建)Targets为BusinessLogicLayer静态库:
2.4 构建PresentationLayer
PresentationLayer不是静态连接工程,需要与BusinessLogicLayer建立关联,具体操作参照2.3。
这样我们就把三个Project依赖了起来,可以在表示层写一些测试代码:
ViewController.m:
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. NoteBL* noteBl = [[NoteBL alloc] init]; NSMutableArray* notes = [noteBl findAll]; NSLog(@"notes===>%@",notes);}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
运行结果为:
2014-02-27 14:51:18.166 PresentationLayer[1409:a0b] notes===>(
"",
""
)
注意由于三个Project为分别依赖,所以Build的顺序应该是先PersistenceLayer然后BusinessLogicLayer最后编译运行PresentationLayer:
3 结语
以上是所有内容,希望对大家有所帮助。代码实例:http://download.csdn.net/detail/u010013695/6969247
相关文章推荐
- IOS第四天(6:答题区按钮点击和乱序)
- iOS 实时定位功能
- iOS 判断GPS是否开启
- ios 图片自动轮播
- IOS第四天(5:创建备份区按钮和判断结果)
- iOS开发中遇到的bug
- iOS真机上的EXC_ARM_DA_ALIGN问题
- [内存管理] 内存五大分区
- iOS开发使用Tab Bar Controller实现页面导航功能
- ios 开发小技巧
- iOS 生成静态库方法,合并静态库等详解
- 电脑管家Win10正式版检测BIOS不通过的解决方法
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- IOS 播放雪花的两种方式(代码方式)
- iOS duplicate symbol _OBJC_CLASS 错误处理方法
- iOS 应用名称的国际化图解
- 网易新闻iOS版使用的18个开源组件
- iOS-#ifdef DEBUG代码块介绍
- iOS-#ifdef DEBUG代码块介绍
- IOS实现点击软键盘的Next/Return按钮或者空白处后自动隐藏键盘