有个顽固的文件夹叫Build
直接移动项目文件夹,会导致运行的时候只运行移动之前的版本,所以在项目文件夹发生移动之后,记得顺手把项目文件夹当中的里面的 Build 文件夹删除。
昨天忽然兴起,于是整理了一下我的电脑文件。特地给几个项目文件重新安置了一个文件夹,方便使用。
结果这个坑,就这样给自己挖好了。
整理好文件之后,就接着开始写代码的欢乐时光了。于是打开项目文件,啪啪啪各种欢快的敲好代码。然后运行看看效果。
这时候,我才发现,我掉坑里了。不管我修改了什么代码,运行的时候,都自动运行以前的版本。甚至,我直接把 AppDelegate 文件给删了,然后点击运行。几秒后,程序正常启动……此刻崩溃的是我的内心。
于是各种百度,Google,必应……无果。
详细的一行行查看 Build Settings 里的选项……无果。
然后查看文件夹,发现,在原来的项目文件夹目录下,自动新建了一个文件夹,名称跟项目文件是一致的。再接着看下去,里面有个 Build 文件夹,里面装了编译好的应用。
此刻,重大的嫌疑犯登场。我仿佛柯南上身,立马觉得,真相,离我不远了。于是顺着查下去,发现,原来我项目文件当中也是有一个 Build 文件夹的。接着我开始对这两个文件夹各种增删改的实验。
最终,我确定,上我身的,其实是毛利小五郎。此刻我的膝盖也是碎掉了的。
于是……我开始求助我认识的各种大牛,老师……无果。
万般无奈之下,居然在一次实验当中。我发现,我成功了。模拟器成功过运行了修改后的代码文件。(于是应用崩溃了,还记得我把AppDelegate删了吗。但是,我的内心又燃起了希望。)无奈的是……我完全不记得自己刚刚做了什么关键的操作……
不过,好歹,希望是有的,于是,我新建一个项目。开始了对比实验。
……
最终,凶手就是 Build 文件夹!(毛利小五郎表示,靠!)
在我们新建 Project 的时候,Build 文件夹是不会建立的,它只会在你第一次打开项目的 xcodeproj 文件时自动检测并建立。虽然不知道是出于哪个位置的配置,总之建立之后,它的位置就固定了。在你移动项目文件夹并打开项目时,如果项目文件夹下 Build 文件夹已经还存在,那他会在原始文件夹目录下重新建立 Build 文件夹。于是,这个坑,就这样出来了。
而解决的办法也很简单。移动项目文件的时候,删除 Build 文件夹。然后才打开 xcodeproj 文件。然后,你就可以愉快的玩耍了。
后记:更新于20150819
有不少小伙伴跟我反应说,其实他们根本就没有自动创建 Build 文件夹。于是,我又翻查了不少资料。
最终发现,Build 文件夹是肯定要有的,只是默认情况下,并不会生成在项目文件当中,而是在Xcode的默认文档当中。
而要让 Build 文件夹在项目文件中也生成一份。(里面有已经编译好的文件,所以,也许是会有人要用到的吧。)只需要依次打开下列选项即可设置。
Xcode -> Preferences -> Location -> Locations -> Derived Data -> Advandced -> Build Location -> Location specified by targets