在Xcode里面有两种颜色的文件夹,一种是黄色的,一种是蓝色的。
黄色文件夹只起到分类的作用,并不代表文件的路径。文件的路径要以磁盘中的文件路径为准。也就是说Xcode和磁盘文件系统可以有两套完全不同的文件分类方式(文件夹的名字可以完全不同)。但是在包含头文件的时候还是要以磁盘的文件路径为准,否则找不到文件。这一点和Visual Studio相同。不同的是,黄色文件夹下面的文件还可以被当作暴露在一级目录下,也就是说在填写这些文件的路径时可以直接写文件名,而不必填写上一级目录名(但是填上也没问题,只是必须填写磁盘中的目录,尤其是当黄色文件夹名和磁盘中的文件夹名字不同时)。
蓝色文件夹和磁盘中的文件夹一一对应,且在填写路径时必须包含蓝色文件夹名。
如果我们把一堆零散的文件拖到Xcode的项目导航区里,那么以groups还是以folder references形式拖入并不重要,重要的是它被拖入到黄色文件夹下面还是蓝色文件夹下面。但是如果我们把装有文件的整个文件夹拖入到Xcode里面,那么以groups形式拖入就会变成黄色文件夹,而以folder references形式拖入就会变成蓝色文件夹。
要注意的是,代码文件必须要以groups的形式拖入,否则无法识别。而资源文件(比如图片和声音等)用何种形式拖入到Xcode里面,程序都能正常运行,只不过在填写文件的路径时要看看它是位于黄色文件夹下还是蓝色文件夹下面。
那么问题来了,既然两种形式都可以,那为什么还建议用folder references形式添加呢?这其实是为了跨平台(如果有这个需求的话)。当把代码编译成Android版apk之后,如果资源文件的路径不明(Android并不管你黄色不黄色,一律都得写入路径),apk运行起来就会报错。所以以folder references添加,就可以很方便的把代码从IOS版移植成Android版,而无需在代码中再去添加资源文件的路径。
水平有限,如有不妥,欢迎拍砖!