为什么在Xcode 4.6中,将objective-C头文件或代码文件从一个文件夹拖到另一个文件夹会使其变为红色?

为什么在Xcode 4.6中,将objective-C头文件或代码文件从一个文件夹拖到另一个文件夹会使其变为红色?,objective-c,xcode,cocoa,xcode4.6,Objective C,Xcode,Cocoa,Xcode4.6,我有一个Xcode 4 objective-C项目,其中包含大约150.m和.h文件。 项目底层的代码在底层磁盘结构中并不总是与Xcode项目中显示的文件夹相对应。我明白了 我不明白的是为什么Xcode不会告诉我为什么我可以创建新的项目组并将项目移动到其中,没有问题,但某些现有项目文件夹会导致项目中断,并且一旦我将某些.m文件或.h文件移动到其他组中,代码将不再生成。当文件损坏时,它只显示红色的文件。这令人沮丧和困惑 在下面的屏幕截图中,前面图像的左侧显示前面的状态,当一切正常时,右侧显示移动到

我有一个Xcode 4 objective-C项目,其中包含大约150.m和.h文件。 项目底层的代码在底层磁盘结构中并不总是与Xcode项目中显示的文件夹相对应。我明白了

我不明白的是为什么Xcode不会告诉我为什么我可以创建新的项目组并将项目移动到其中,没有问题,但某些现有项目文件夹会导致项目中断,并且一旦我将某些.m文件或.h文件移动到其他组中,代码将不再生成。当文件损坏时,它只显示红色的文件。这令人沮丧和困惑

在下面的屏幕截图中,前面图像的左侧显示前面的状态,当一切正常时,右侧显示移动到组后的红色(丢失)文件。考虑到组并不代表磁盘上的文件夹,我不希望从一个组移动到另一个组会破坏东西。有时会,有时不会。这个特殊的XCode问题让我非常不安

在Mac用户界面友好的好日子里,你可以⌘+我可以单击鼠标右键并获取有关对象属性的一些信息,或者单击鼠标右键并通过上下文菜单获取某个对象的属性。XCode项目中的组(文件夹图标)在其上下文(右键单击菜单)中没有属性项,但这些组显然不尽相同。这些看起来一模一样的团体怎么了

其次,一个人如何学习如何以一种不会让你流血和挨打的方式重新组织磁盘文件夹组织和可视组组织?(XCode 4是我使用过的最难的IDE版本,因此,我肯定错过了一些关于处理文件夹和文件等的重要文档。)

更新:File Inspector(实用程序菜单中的Identity Inspector)是解开这个谜团的关键,但我仍然不知道新用户如何发现这个谜团(除了痛苦的体验)。我也不太明白这一切是什么,在路径下拉中有各种各样的选择,以及没有描述或帮助的空白或非空白值,只是一个隐藏的图标,或者是一些真正的磁盘上的文件夹的名字,或者是灰色的文本字段,没有一个:


这种事情不是突然发生的。在这种情况下,所发生的情况是,用户打开了一个.xcodeproj,并且不知道组可以是其中一部分的各种相对或绝对路径选项之间的差异。无论在XCode项目中定义了什么模式或属性,XCode中的组始终以完全相同的manilla颜色文件夹图标显示在XCode项目中

默认情况下,最简单的情况是在XCode中创建一个新的文件夹组对象,它纯粹是一个装饰性的组织工具,没有存储磁盘位置信息

这不是这些组所做的唯一事情,也不是这些组可以使用的唯一“模式”。这些组还可以用于指向某个文件夹,并说“此虚拟文件夹中的内容实际上位于其他位置,或者位于该项目主文件夹下的子目录中,或者甚至位于硬盘驱动器上的其他位置,或者以相对路径或绝对路径格式存储”。当使用这种方式时,这些东西提醒我桌面上的Windows“快捷方式”对象,或者查找器中的Mac“Alias”对象

将文件从一个组拖动到另一个组不会将其移动到磁盘上的其他文件夹。它只是将对具有特定名称的文件的引用移动到另一个组,这可能意味着在拖动文件后,您并没有真正移动、复制或以任何方式重新定位它,您只是将别名从一个可以正确解析为真实文件的位置移动到了一个无法的位置。因此,XCode可以帮助您将其变为红色,而不会出现任何关于发生了什么的有用错误消息

你怎么修理它?在这种情况下,转到Utilities菜单中的Identity inspector窗格,或者决定清除我在原始问题图片中显示的、我有“类”的地方的伪值。清除无效的值并不容易,因为XCode要求您基本上找到项目的根文件夹并选择它,这将“清除”文件夹组上的相对或绝对路径属性

或者,您可以不使用该文件夹,只需在不首先检查文件引用的相对或绝对路径的情况下,将文件从组A拖动到组B即可


对我来说仍然很可怕的是,XCode教程告诉您“使用XCode管理项目内容,不要只是在XCode项目目录中的查找器中拖拽文件”,这是一个很好的建议,但它让我认为XCode提供了完整和直观的物理(和虚拟)功能对文件夹组织工具进行分组。事实并非如此。例如,假设您继承了一个项目,该项目的.m和.h文件分散在主XCode项目文件夹下的四个物理文件夹中,并且您希望移动这些文件。您必须在XCode内,或者在Terminal中,或者在Finder中,依次执行一些复杂的操作重新组织您的文件夹。再加上在您选择的版本控制工具中移动项目所涉及的复杂性,以及XCode对Git和Subversion的支持非常有限,您遇到了一个非常棘手的麻烦。

同样困惑的用户提出的相关问题:您是否查看了XCode上的各种介绍视频ADC(开发者?苹果?)?他们为Mac上的开发工作打下了坚实的基础。是的,他们中没有一个能解释“组名”和“路径是相对于组”的所有疯狂的东西,还有其他的选择。