【问题标题】:Referring to an .h class of a subproject引用子项目的 .h 类
【发布时间】:2015-07-26 01:17:07
【问题描述】:
Dropbox iOS SDK 有自己的框架包,但为了轻松自定义它,我选择将其 Xcode 项目作为子项目包含在内。
我应该如何引用它的 .h 类?
我从“添加文件”按钮添加了 .xcodeproj,并在标题搜索路径中添加了以下值:
$(PROJECT_DIR)
子项目看起来与主项目处于同一级别。
导入本身不应该链接依赖吗?
(我对 Xcode 中的导入系统感到非常沮丧)
【问题讨论】:
标签:
ios
objective-c
xcode
subproject
【解决方案1】:
您的基本方法看起来不错(并且与我处理大量供应商项目的方式非常接近)。由于您已将 $(PROJECT_DIR) 添加到标题搜索路径中,并假设框架位于名为“Dropbox”的目录中,因此您可以通过多种方式引用包:
#import <Dropbox/Header.h>
#import "Dropbox/Header.h"
我更喜欢将子项目视为“类系统”,因此倾向于使用尖括号,为内部代码保留双引号。但是这两种方法都很好。
导入本身不应该链接依赖吗?
没有。您仍然需要链接依赖项。 #import 只做一件事:将请求的文件插入到当前文件中。这就是它所做的全部。它与您获取引用的文件并将其复制/粘贴到您的代码中相同(这基本上就是它在预处理器中的实现方式)。这用于“头”文件是一个约定问题。它与编译器的工作方式无关。从技术上讲,您可以导入一个 .m 文件,其中包含一个方法作为代码重用的一种方式。 (我已经在我从事的项目中看到过这种情况。请不要这样做......)
在处理 ObjC 模块时,情况略有不同(使用 @import 而不是 #import)。但是,如果您只是按照您的样子导入标头,请将其视为“将其他文件粘贴在此处,完全按照所写的内容。”