引用子项目的 .h class

Referring to an .h class of a subproject

Dropbox iOS SDK 有自己的框架包,但为了轻松自定义它,我选择将其 Xcode 项目作为子项目包含在内。 我应该如何引用它的.h 类? 我从 "Add files" 按钮添加了 .xcodeproj,并在 Header 搜索路径中添加了以下值:

$(PROJECT_DIR)

子项目看起来与主项目处于同一级别。

导入本身不应该 link 依赖项吗?

(我对Xcode中的导入系统感到非常沮丧)

您的基本方法似乎很合理(并且与我处理许多供应商项目的方式非常接近)。由于您已将 $(PROJECT_DIR) 添加到 header 搜索路径,并假设框架位于名为 "Dropbox" 的目录中,那么您可以通过多种方式引用这些包:

#import <Dropbox/Header.h>
#import "Dropbox/Header.h"

我更喜欢将 sub-projects 视为 "system-like",因此倾向于使用 angle-brackets,为内部代码保留 double-quotes。但是这两种方法都很好。

Shouldn't the importing itself link the dependencies?

没有。您仍然需要 link 依赖项。 #import 只做一件事:将请求的文件插入到当前文件中。这是 all 它所做的。这与您将引用的文件 copy/pasting 放入您的代码中是相同的(这基本上就是它在 pre-processor 中的实现方式)。这用于 "header" 文件是约定俗成的问题。它与编译器的工作方式无关。从技术上讲,您可以导入一个 .m 文件,其中包含一个方法,作为代码重用的一种方式。 (我在我从事的项目中看到过这样做。请不要这样做....)

在处理 ObjC 模块时,有点不同(使用 @import 而不是 #import)。但是如果你只是像你看起来那样导入 headers,可以把它想象成 "stick this other file right here, exactly as written."