參考文章(推薦直接看原文章):
總結(jié)如下:
__has_include()宏的作用
__has_include()宏接收一個(gè)預(yù)引入的頭文件名稱(引號(hào)或者尖括號(hào)都可以)作為參數(shù),如果該頭文件能夠被引入則返回 1,否則返回 0
用不同的方式引用第三方開(kāi)源庫(kù)則引用頭文件的方式也不同
- 直接將源碼拖拽到工程中,只能以
""的方式import
#import "AFNetworking.h"
- 使用CocoaPods,如果開(kāi)啟
use_framewors!,則將編譯成.framework庫(kù),只能以<>的方式imaport
#import <AFNetworking/AFNetworking.h>"
- 使用CocoaPods,如果不開(kāi)啟
use_framewors!,則將編譯成.a庫(kù),此時(shí)有如下3中方式import。
#import "AFNetworking.h"
// 或者
#import <AFNetworking.h>"
// 或者
#import <AFNetworking/AFNetworking.h>"
因此,如果我們無(wú)法判斷App工程如何引入第三方庫(kù)可以使用如下方式
# if __has_include(<AFNetworking/AFNetworking.h>)
#import <AFNetworking/AFNetworking.h>
#else
#import "AFNetworking.h"
#endif