有时,在重复的测试与调试期间,最好在进行不同类型的构建前(从Debug切换到Release,或从模拟器切换到设备中运行)清理目标。这意味着将会删除现有的构建并清除缓存,这样所有代码才会被编译,下一次构建才会从头开始构建应用。
与字面上的意思一样,清理会清除不需要的东西。比如,假设应用中包含了某个资源,但未来不再需要。可以在Copy Bundle Resources构建阶段将其删除(或从项目中删除),不过这并不会从构建好的应用中删除。这种残留资源会导致一些莫名其妙的问题。错误的nib版本可能会出现在界面中;编辑过的代码行为可能与编辑前一样。清理则会删除构建好的应用,很快就能解决问题。
我将清理划分为几个层次:
浅层清理
选择Product→Clean,它会删除构建好的应用以及构建目录中的一些中间信息。
深层清理
按住Option键并选择Product→Clean Build Folder,它会删除整个构建目录。
完全清理
关闭项目。打开项目窗口(Window→Projects)。找到左侧列出的项目并单击。在右侧选择Delete。这会删除用户目录下Library/Developer/Xcode/DerivedData目录中的全部目录。
彻底清理
关闭Xcode。打开用户目录下的/Developer/Xcode/DerivedData,将其内容全部移至废纸篓。这是对最近打开的所有项目的完全清理,再加上模块缓存。删除模块缓存会重置Swift本身,这可能会导致一些编辑、代码完成或语法着色等出现问题。
除了清理项目,你还应该将模拟器中的应用删除。原因与清理项目一样:当应用构建完毕并被复制到模拟器中时,构建好的应用中的已有资源可能不会被删除(为了节省时间),这可能会导致应用表现出不正确的行为。要在运行模拟器时进行清理,请选择iOS Simulator→Reset Content and Settings。