使用CocoaPods #import <library library.h =“”>和#import <library.h>之间有什么区别?</library.h> </library>

时间:2014-02-13 19:28:02

标签: ios cocoapods

我见过CocoaPods的指南,建议像这样导入一个必需的pod库头:

#import <Library/Library.h>

其中Library是图书馆的名称(例如#import <AFNetworking/AFNetworking.h>)。

我也看到过建议导入所需pod的库标题的指南:

#import <Library.h>

(例如#import <AFNetworking.h>

这两种方法都可以编译并且似乎有效。

有什么区别,哪些应该使用?

2 个答案:

答案 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只会指向放置标题的根目录。