我见过CocoaPods的指南,建议像这样导入一个必需的pod库头:
#import <Library/Library.h>
其中Library
是图书馆的名称(例如#import <AFNetworking/AFNetworking.h>
)。
我也看到过建议导入所需pod的库标题的指南:
#import <Library.h>
(例如#import <AFNetworking.h>
)
这两种方法都可以编译并且似乎有效。
有什么区别,哪些应该使用?
答案 0 :(得分:6)
如果导入的标头是唯一的,则任何一种方法都可以正常工作。但是,如果在两个不同的第三方库中有一个具有相同名称的标题,则它会变得模棱两可,您需要指定所需的标题。
通常,最好指定库名,以便不会发生这种情况,但也因为对于读取代码的人来说,显然是头文件所属的库是显而易见的,因为它并不总是基于标题名称。
答案 1 :(得分:1)
Actualy:
#import <Library/Library.h>
不同于:
#import <Library.h>
在第一种情况下,告诉预处理器,HEADER_SEARCH_PATH中有一个目录,其中包含一个名为“Library”的目录,该目录中有一个文件“Library.h”。 在第二种情况下,预处理器假定它可以直接在HEADER_SEARCH_PATH中找到“Library.h”。 如果两个目录都在HEADER_SEARCH_PATH中 - 这两个目录之间没有区别。 一些CocoaPods在规范中指定
s.header_mappings_dir = 'SomeFolderWhereSourcesPlaced'
在这种情况下
A directory from where to preserve the folder structure for the headers files. If not provided the headers files are flattened.
因此,如果指定了header_mappings_dir,则需要完整路径,因为pod install只会指向放置标题的根目录。