在ios中使用第三方类库
来源:互联网 发布:visual basic编程语言 编辑:程序博客网 时间:2024/05/20 18:45
在项目开发中经常会用到一些第三方类库,通常有两种方法来做到:一种方法是直接把所有的.h和.m文件复制到项目中;另一种方法是把.xcodeproj拖到项目中生成静态链接库并引用。
方法一:直接复制所有源文件到项目中这种方法就是把第三方类库的所有源文件复制到项目中,直接把所有.h和.m文件拖到XCode项目中即可。如果第三方类库引用了一些系统自带类库,那么在项目中还需要额外引用那些类库。
如果当前的项目启用了ARC,而引用的第三方类库未使用ARC,那还需要在项目信息的Targets – Build Parses里找到第三方类库的.m文件,并为它们加上-fno-objc-arc标记。
而对于在未启用ARC的项目用引用使用了ARC的第三方类库,则需要为第三方类库的.m文件加上-fobjc-arc标记。
另外,在源代码中可以通过一个编译器指令__has_feature(objc_arc)来检测项目是否使用了ARC,具体见http://clang.llvm.org/docs/LanguageExtensions.html#langext-has-feature-has-extension。
方法二:引用.xcodeproj生成静态链接库并引用
首先,在XCode中把第三方类库的.xcodeproj文件拖到当前项目中;如果第三方类库封装了一些资源在.bundle文件里,那么.bundle文件需要和.xcodeproj一起拖到项目中。
然后,在项目的Targets – Summary – Linked Frameworks and Libraries或者在Targets – Build Phases – Link Binary With Libraries添加第三方类库生成的静态链接库引用。
接着,还需要在Targets – Build Settings – Search Paths的User Header Search Paths参数中加入第三方类库的头文件路径,可以是绝对路径如:/Users/libpath,也可以是相对路径(相对于当前项目文件夹)如:../**。
最后,有些静态链接库引用进来可能还需要增加一些标记,在Targets – Build Settings – Linking的Other Linker Flags参数中增加:-Objc, –all_load这一类标记。
通过以上几步,一般都可以成功编译。
当然还有一些例外的情况:- 当前项目和第三方类库同时使用了另外的一些第三方类库,这个时候还需要额外做一些处理才能成功编译:在引用的第三方类库的.xcodeproj项目 – Targets – Build Phases中的Compile Sources和Copy Headers把重复的.m和.h文件移除掉。
- 第三方类库引用的一些系统自带类库,如果项目中没有引用,也可能会引起编译错误,这时还需要在项目中引用第三方类库引用的一些系统自带类库。比如:第三方类库引用了QuartzCore.framework,而项目中未引用QuartzCore.framework则可能引起编译错误,就需要在项目中也引用QuartzCore.framework。
- 在ios中使用第三方类库
- 在ios中使用第三方类库
- 在iOS中使用第三方类库
- 在iOS中使用第三方类库
- iOS中使用cocoaPods管理第三方类库
- iOS如何在工程中使用第三方(网络)图片
- CocoaPods的使用(xcode创建的IOS应用中引入第三方类库:在同一目录下pod install/update)
- iOS 优化内存(七)开发中使用第三方类库
- ios中导入第三方类库
- ios中导入第三方类库
- 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库、组件
- 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库、组件
- 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库、组件
- 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库、组件
- 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库、组件
- 如何在RCP程序中使用第三方类库?
- iOS中使用第三方字体
- iOS 项目中使用第三方字体
- 获取文件大小及文件名
- jQuery 中 jQuery(function(){})与(function(){})(jQuery) 的区别
- superTables超级表格
- cocos2d-x 数学函数、常用宏粗整理
- Linux Shell编程入门
- 在ios中使用第三方类库
- 润乾--比较两个xml配置文件
- 致命错误:异常代码=C0000005(这篇最详细,收藏之~)
- 三个数从小到大排序
- Flume研究心得
- Android2.3 64位服务器系统环境搭建
- WCF服务的创建与调用
- 运动检测(前景检测)之(一)ViBe
- IOS开发之内存管理self.prop=nil; vs. [prop release];prop=nil;