简单(而且非常不幸)的答案是 Xcode 下的文件夹引用仍然损坏且有 bug,它们不起作用。 2017 年 3 月 4 日在 Xcode 8.2.1 中测试
下面是一个示例探索,因此您不必浪费时间来重现 Xcode 失败的情况。
(顺便说一下,当我生成这个示例时,有问题的 Xcode 崩溃了两次)
根据这个问题,总体愿望是在 Xcode 中使用文件夹引用,以便 Xcode 拾取文件夹中的所有文件并将它们包含在项目中,并且通过代理将根据文件夹的任何 Finder 或 Xcode 更改自动更新。这样,当这些文件夹发生更改时,无需单独更新全部利用同一组通用源代码文件的 50 个项目。下面探讨了如何在 Xcode 中破坏它(在 8.2.1 中测试)
这个例子:ViewController.m
包括NSError+Core.h
所以我们希望文件夹“NSError+Core”中的所有内容都添加到项目中。
NSError+Core.h
位于这个位于中心位置的开发文件夹中
将源文件夹从 Finder 拖到“支持”组下的项目中(没有什么我的袖子,简单的拖动)
Xcode 尽职尽责地提供将拖动添加到目标的功能,请注意选择了“创建文件夹引用”,而不是“创建组引用”。另请注意,很明显 Xcode 正在提供并被告知将此文件夹和文件添加到目标中。
尽管一切看起来都应该有效,但编译器不会拾取头文件,并且重新编译会产生相同的结果......找不到头。放弃 DerivedData 也没有帮助。
于是仔细检查了一下,我们检查了项目下的“编译源”,果然,源文件也不存在。请记住,Xcode 将其“添加”到目标中......
那么如果我们将它从文件夹拖到“支持”组中会怎样......
它提出将它们再次添加到项目中?!请注意,这些设置与第一次吸毒时相同,是通过父文件夹拖动而不是文件...
And now源文件显示在“编译源”列表中。请注意项目中奇怪的双重文件列表。
(截图后不久 Xcode 就崩溃了)
当然,编译器现在可以找到头文件,并且导入时的错误会被清除,因为我们第一次将其添加到...
是否只需要一点帮助就可以“找到”该文件?如果是这样,“创建文件夹引用”到底是做什么的?
因此,我们尝试整理并将文件从父“支持文件”组拖回其正确的文件夹。如果没有任何确认、指示、通知,文件就会从组中消失,并且 NSError+Core 文件夹中什么也不会发生。
哦,顺便说一句,它确实也从项目中删除了它们......编译源不再有 NSError+Core.m 引用。
总而言之,迄今为止实施的“文件夹引用”似乎没有任何有用的目的......它似乎是 USS Xcode 上的一个 6 岁以上的老邓塞尔。