Objective-C import 第三方库头文件总结

栏目: Objective-C · 发布时间: 7年前

内容简介:当我们的 iOS 工程要引用其它第三方开源库时,一般有以下几种方式:(1)下载源代码直接拖拽到工程中;(2)使用 CocoaPods 管理,当开启

当我们的 iOS 工程要引用其它第三方开源库时,一般有以下几种方式:

(1)下载源代码直接拖拽到工程中;

(2)使用 CocoaPods 管理,当开启 use_frameworks! 标记时,第三方库会被编译成 .framework 引入工程,否则就会编译成 .a 静态库;

(3)使用 Carthage 管理,第三方库会被编译成 .framework 然后导入工程;

(4)直接下载作者编译好的 .framework 导入工程。

但当我们在代码中要 import 第三方库的头文件时,对于这几种情况,写法都不太一样,以 AFNetworking 为例,总结如下:

  • 对于(1)拖拽源码,只能以 "" 引号的方式 import,
#import "AFNetworking.h"
  • 对于(2)CocoaPods,如果开启 use_frameworks! ,则将编译成 .framework 库,只能以 <> 尖括号的方式 import, 此外,对于(3)和(4)也是这样
#import <AFNetworking/AFNetworking.h>
  • 而对于 CocoaPods,如果不开启 use_frameworks! ,则将编译成 .a 库,此时有如下 3 种方式 import,
#import "AFNetworking.h"
// 或者
#import <AFNetworking.h>
// 或者
#import <AFNetworking/AFNetworking.h>

那么问题来了,如果我们在写一个 SDK 或者私有的 Pods 库,需要宿主 App 工程引用某一个第三方库,如上所述,宿主工程有很多方式引用第三方库,这样我们就无法确定应该以哪种方式 import 头文件,怎么办呢?这时候我们就可以使用 __has_include() 宏来判断。

__has_include() 宏接收一个预引入的头文件名称(引号或者尖括号都可以)作为参数,如果该头文件能够被引入则返回 1 ,否则返回 0 ,使用起来如下:

#if __has_include(<AFNetworking/AFNetworking.h>)
#import <AFNetworking/AFNetworking.h>
#else
#import "AFNetworking.h"
#endif

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Geometric Folding Algorithms

Geometric Folding Algorithms

Erik D Demaine / Cambridge University Press / 2008-8-21 / GBP 35.99

Did you know that any straight-line drawing on paper can be folded so that the complete drawing can be cut out with one straight scissors cut? That there is a planar linkage that can trace out any alg......一起来看看 《Geometric Folding Algorithms》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具