我注意到,如果您将相同的图像两次拖入 Xcode,那么它会在项目导航器视图中复制*。换句话说,它被列出了两次。
两个问题:
- 为什么会这样?- 不应该有警告吗?
- 如果我删除对这些文件之一的引用** 以使项目导航器视图仅列出一次图像,这是否存在某种风险?我没有删除对同一文件的引用吗?*
*通常在 Xcode 中最左边的列包含项目中的文件列表
**通过右键单击其中一个图像文件->然后点击删除选项->然后选择“删除参考”
***删除引用仅删除一个文件,另一个文件保留。
项目文件包含对文件的引用列表。这些文件可能位于您的本地项目文件夹或其他任何地方。
将同一个文件拖入两次,可以选择复制到项目文件夹,第二次会报错。同一个文件夹中不能有两个同名的文件。但是对文件的引用没有这样的限制。它们只是项目文件列表中的条目。
因此,如果您拖动文件而不移动它,您只是在创建一个参考。
是的,当您右键单击这些引用之一并选择删除时,您可以选择仅删除引用,或者也将引用的文件移动到垃圾箱。仅删除参考是非常安全的。该文件将保持不变,并且对该文件的其他引用仍然有效。
要了解为什么会发生这种情况,您需要了解添加文件时的选项。将图像或文件添加到项目时,您可以启用或禁用以下选项:
将项目复制到目标组的文件夹(如果需要)
那么这到底是什么意思呢?通过选择(选中)此选项,您将原始文件的副本复制到 Xcode 项目组文件夹中。现在,当您从源调用文件时,您将引用复制到项目组文件夹中的文件。原始文件,无论在哪里(桌面)都保持不变。
注意 - “如果需要”限定词是什么意思?
如果该文件已存在于项目组文件夹中,则不会将该文件复制到该文件夹中。只需将引用添加到项目导航器中。如果这没有意义,那么我会给你一个实际的例子。假设您创建了一堆图像并将它们直接添加到项目文件夹中。我的意思是你使用finder(而不是通过Xcode)将它们拖放到Xcode项目文件夹中。此时您已将文件添加到项目中,但如果您打开 Xcode 项目,您会注意到在导航器中看不到对该文件的引用。所以这是一个 if required 限定符将被触发的情况。您仍然需要像往常一样通过 Xcode 添加对文件的引用。但是这次只是进行了引用,没有文件被复制到项目文件夹中,因为它已经存在。
如果您不选中该选项会发生什么?
Xcode 将创建对文件的引用,但不会创建文件的副本并将其添加到项目中。Xcode 项目中的引用将指向文件的原始位置,无论它在哪里。除非您知道原因并且需要这样做,否则不建议这样做,因为如果您不小心删除了原始文件,则对该文件的引用将被破坏。您将知道何时会发生这种情况,因为 Xcode 中的文件引用将显示为红色。
现在回到你的情况。在您的情况下发生的情况是您将文件添加到项目中而未选中该选项。这将在 Xcode 中创建对文件的引用,并将文件实际移动到项目中。第二次将其添加到项目中时,您正在创建对该文件的新引用,但实际上并未执行任何文件操作,例如移动或复制,因此不会出现错误。
我建议始终选中上面的选项。这样,您将知道是否将重复文件添加到项目中。此外,您将来也不会破坏对您文件的任何引用。希望这可以帮助您了解更多背后的原因。