Objective-C import 第三方库头文件总结
栏目: Objective-C · 发布时间: 8年前
内容简介:当我们的 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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
HTML5秘籍(第2版)
[美] Matthew MacDonald / 李松峰、朱巍、刘帅 / 人民邮电出版社 / 2015-4 / 89.00元
不依赖插件添加音频和视频,构建适用于所有浏览器的播放页面。 用Canvas创建吸引人的视觉效果,绘制图形、图像、文本,播放动画,运行交互游戏。 用CSS3将页面变活泼,比如添加新奇的字体,利用变换和动画添加吸引人的效果。 设计更出色的Web表单,利用HTML5新增的表单元素更加高效地收集访客信息。 一次开发,多平台运行,实现响应式设计,创建适配桌面计算机、平板电脑和智能手机......一起来看看 《HTML5秘籍(第2版)》 这本书的介绍吧!