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