在iOS中使用第三方类库

移动开发 iOS
在项目开发中经常会用到一些第三方类库,通常有两种方法来做到:一种方法是直接把所有的.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 PathsUser Header Search Paths参数中加入第三方类库的头文件路径,可以是绝对路径如:/Users/libpath,也可以是相对路径(相对于当前项目文件夹)如:../**。

最后,有些静态链接库引用进来可能还需要增加一些标记,在Targets – Build Settings – LinkingOther Linker Flags参数中增加:-Objc–all_load这一类标记。

通过以上几步,一般都可以成功编译。

当然还有一些例外的情况:

  1. 当前项目和第三方类库同时使用了另外的一些第三方类库,这个时候还需要额外做一些处理才能成功编译:在引用的第三方类库的.xcodeproj项目 – Targets – Build Phases中的Compile SourcesCopy Headers把重复的.m和.h文件移除掉。
  2. 第三方类库引用的一些系统自带类库,如果项目中没有引用,也可能会引起编译错误,这时还需要在项目中引用第三方类库引用的一些系统自带类库。比如:第三方类库引用了QuartzCore.framework,而项目中未引用QuartzCore.framework则可能引起编译错误,就需要在项目中也引用QuartzCore.framework。
责任编辑:张叶青 来源: 开源社区
相关推荐

2014-07-22 10:56:45

Android Stu第三方类库

2014-07-23 08:55:42

iOSFMDB

2011-07-20 10:12:33

XCode Cocoa dylib

2019-07-30 11:35:54

AndroidRetrofit

2015-11-05 16:44:37

第三方登陆android源码

2012-04-19 14:16:22

TitaniumTiMVC

2013-01-15 13:50:22

iOS开发开源库

2015-07-13 09:48:21

iOS

2015-07-13 13:34:13

ios第三方库xcode插件

2010-05-25 11:09:31

SVN工具

2022-01-14 09:57:14

鸿蒙HarmonyOS应用

2011-07-25 14:14:49

iPhone SQLITE Pldatabase

2010-03-03 15:10:49

第三方Python库

2014-08-13 10:27:23

CocoaPods

2011-08-16 18:46:35

IOS开发Three20缓存机制

2012-08-03 09:47:00

iOS 6第三方应用

2021-10-11 06:38:52

Go开源库语言

2019-09-03 18:31:19

第三方支付电商支付行业

2009-12-31 14:38:34

Silverlight

2016-10-21 14:09:10

点赞
收藏

51CTO技术栈公众号