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

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

内容简介:当我们的 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

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

查看所有标签

猜你喜欢:

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

UML和模式应用

UML和模式应用

拉曼 / 李洋、郑䶮 / 机械工业出版社 / 2006-5 / 66.00元

《UML和模式应用(原书第3版)》英文版面世以来,广受业界专家和读者的好评,历经3个版本的锤炼,吸收了大量OOA,D的精华思想和现代实践方法。全书叙述清晰、用词精炼、构思巧妙,将面向对象分析设计的概念、过程、方法、原则和个人的实践建议娓娓道来,以实例为证,将软件的分析和设计的过程叙述得如逻辑推理一般,于细节处见真知。 《UML和模式应用(原书第3版)》是一本经典的面向对象分析设计技术的入门书......一起来看看 《UML和模式应用》 这本书的介绍吧!

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

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换