254

乔纳森在这里建议:Xcode 包含已删除的 .xib 文件!清理所有目标并清空缓存将解决 Xcode 的问题,包括已删除的 .xib 文件,但我找不到在 Xcode 4 中清空缓存的方法。

如何在 Xcode 4 中做到这一点?

4

13 回答 13

541

Command-Option-Shift-K 清除构建文件夹。更好的是,退出 Xcode 并手动清理~/Library/Developer/Xcode/DerivedData。删除其所有内容,因为存在一个错误,Xcode 将运行您项目的旧版本,该版本位于某处。(Xcode 4.2 将显示 Derived Data 文件夹:选择 Window > Organizer 并切换到 Projects 选项卡。单击 Derived Data 文件夹名称右侧的右箭头。)

在模拟器中,选择 iOS Simulator > Reset Content and Settings。

最后,为了完整起见,您可以删除/var/folders的内容;那里也发生了一些缓存。

警告:删除/var/folders可能会导致问题,这样做后您可能需要修复或重新安装操作系统。

编辑:我刚刚了解到,如果您害怕处理/var/folders/您可以在终端中使用以下命令以更有针对性的方式进行删除:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"

编辑:对于某些与 Swift 相关的问题,我发现删除~/Library/Caches/com.apple.dt.Xcode很有用。当你这样做时,你会失去很多,比如你下载的文档文档集的备用副本,但它可能是值得的。

于 2011-06-06T01:25:55.420 回答
73

Command-Option-Shift-K 应该这样做。或者,转到产品菜单,按选项键,现在选项“清理”将更改为“清理构建文件夹...”选择该选项。

于 2011-04-25T04:21:52.060 回答
23

除了执行以下操作之外,如果您的应用的 Storyboard 文件已本地化,您可能会遇到此问题。首先,执行以下各项:

  • 清洁构建
  • 重置模拟器
  • 重启 Xcode
  • 删除~/Library/Developer/Xcode/DerivedDataDerivedData中的文件夹
  • 重启电脑

最终对我有用的是重新生成故事板本地化文件并删除英语本地化(这是不需要的,因为 Base Locale 是英语)。要重新加载 Storyboard 字符串,请在 StackOverflow 上查看此答案

我注意到我的故事板的非文本部分正在更新,而不是本地化文本。如果您的应用程序中有本地化,我建议您检查以确保您的本地化已更新(即使它们是.strings文件)。

于 2013-10-27T03:13:21.193 回答
18

除了command+option+shift+K,我找到了另一种方式。在 XCode 4.2 中有一个可以从右上角打开的管理器。您可以从那里清除所有存档和保存的项目选项。这有助于我的情况(我在 mainBundle 中看到旧的已删除文件)。

于 2012-04-23T13:45:22.947 回答
10

我一直在拔头发,因为我认为我有同样的问题。在构建应用程序时,我在 iPhone 上的结果与在模拟器上的结果不同。

问题是我以某种方式制作了 MainStoryboard.storyboard 文件的本地化版本。因此,当我在手机上运行该应用程序时,它显示的是丹麦版……而模拟器显示的是英文版。

是的,我是新人!:)

于 2011-12-19T02:07:43.727 回答
7

要删除所有派生数据和模块缓存,请/var/folders使用这个小红宝石脚本

derivedDataFolder = Dir.glob(Dir.home + "/Library/Developer/Xcode/DerivedData/*")
moduleCache = Dir.glob("/var/folders/**/com.apple.DeveloperTools*")
FileUtils.rm_rf derivedDataFolder + moduleCache

这只是fatal error: malformed or corrupted AST file: 'Unable to load module "/var/folders/为我解决了一个错误。

于 2013-10-16T16:14:37.233 回答
6

当我打开文档窗口时,我遇到了一些 Xcode 5.1 崩溃的问题。

我不确定它的原因,因为我在打开窗口时也在更新文档集。

好吧,在 Xcode 5 中,模块目录现在位于派生数据文件夹中,出于明显的原因,我没有删除它。我删除了~/Library/Developer/Xcode/DerivedData/ModuleCache~/Library/Preferences/com.apple.Xcode.plist的内容,然后在我重新启动 Xcode 后一切似乎都正常了。

于 2014-03-13T01:00:37.010 回答
3

我的 Xcode 10.2 和 Mojave 的“DerivedData”在这里:

MacHD/用户/[我的用户]/库/开发者/Xcode

于 2019-07-01T09:17:45.783 回答
1

使用“数据模型”时,检查器中有选项可以生成类,对我来说就是这种情况,因为已经有一个具有现有名称的类。

Codegen:为我解决了这个问题。

在此处输入图像描述

于 2017-07-12T19:55:34.230 回答
0

您必须小心 xib 文件。我尝试了以上所有方法,但对我没有任何帮助。我正在使用 xib 中定义的自定义 UIButtons,并意识到这可能与我在那里分配的属性没有以编程方式更改的事实有关。如果您在那里定义了图像或文本,请将它们删除。当我这样做时,我的程序化更改开始生效。

于 2014-02-18T15:22:52.710 回答
0

这是我的shell 脚本解决方案,用于删除 Xcode 4、5 和 6 的派生数据并清理项目的缓存资产。

有时,只需在派生数据目录上调用 rm -rf 就会留下一两个挥之不去的文件,但我的脚本会循环,直到所有文件都被删除。

于 2015-01-16T06:55:27.863 回答
0

我几乎尝试了所有方法但无济于事,帮助我的是禁用 SIP(​​系统集成保护)n 它可以工作,我不知道何时以及如何发生什么,但系统文件在某处混淆并导致这种情况......尽管可能存在风险显然禁用这个

这里是如何

1.打开Mac并按住[command]+[R]键访问恢复分区。

2.从恢复分区中,单击菜单栏中的实用程序,然后选择终端。

3.在终端输入以下命令并回车执行:csrutil disable

4.一旦命令执行完毕,退出终端并重新启动 Mac。当您重新登录 OS X 时,SIP 将被禁用。

于 2016-10-19T11:34:19.243 回答
0

对我来说,缓存图像有帮助:Xcode -> Product -> Clean Build Folder

于 2022-02-19T18:06:03.567 回答