如何清空缓存并清理所有目标Xcode 4及更高版本


238

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

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


这是我的[shell脚本解决方案] [1],它同时删除了xCode 5和6的派生数据。[1]:stackoverflow.com/a/27977848/1231948
Sheamus,2015年

Answers:


514

Command-Option-Shift-K清除构建文件夹。更好的是,退出Xcode并手动清理〜/ Library / Developer / Xcode / DerivedData。删除所有内容,因为存在一个错误,即Xcode会在某个地方运行项目的旧版本。(Xcode 4.2将向您显示“派生数据”文件夹:选择“窗口”>“管理器”并切换到“项目”选项卡。单击“派生数据”文件夹名称右边的右箭头。)

在模拟器中,选择“ iOS模拟器>重置内容和设置”。

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

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

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

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

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


6
好的,清理路径:Library / Developer / Xcode / DerivedData +重置模拟器的内容和设置即可!
蒂姆2011年

10
路径似乎在我的主目录中(请注意波浪号):〜/ Library / Developer / Xcode / DerivedData也许这对其他人来说很明显,但万一有人遇到问题……
Victor Van Hee

37
呵呵,作为übern00b,我删除了/ var / db,在其中找到了来自Xcode /我的项目的东西。这使我浪费了五个小时浪费文件系统中的日志记录,修复和重新安装Lion,等等。请注意!:-)
乔纳斯·比斯特罗姆(JonasByström),

4
@Jonas我被迫向“删除/ var / folders”建议中添加警告。不是为了没有经验的人!
LearnCocos2D

7
不要使用sudo运行rm -rf / var / folders,否则您将自己修复:)
Josip B.

68

Command-Option-Shift-K应该这样做。或者,转到产品菜单,按选项键,现在选项“ Clean”将更改为“ Clean Build Folder ...”,然后选择该选项。


不,太糟糕了..我只是按照您所说的更改并重命名了一个xib文件并清理了该应用程序,但它仍然可以正常加载而没有错误。
蒂姆(Tieme)2011年

2
哇,关于Mac OS X菜单的alt键技巧从来就不新鲜!!!这确实定义了“ Alt” ernate的含义。
trusktr 2013年

19

除了执行以下操作外,如果您应用的情节提要的文件已本地化,您可能还会遇到此问题。首先,执行以下每个操作:

  • 干净的构建
  • 重置模拟器
  • 重新启动Xcode
  • 删除〜/ Library / Developer / Xcode / DerivedData中的DerivedData文件夹
  • 重启电脑

最终对我有用的是重新生成情节提要本地化文件,并删除了英语本地化(这是不需要的,因为基本语言环境是英语)。要重新加载Storyboard字符串,请在StackOverflow上查看此答案

我注意到情节提要的非文本部分正在更新,但本地化的文本没有更新。如果您的应用中有本地化版本,我建议您检查一下以确保您的本地化版本已更新(即使它们是.strings文件)。


2
删除/ var / folders 的内容(不是整个文件夹)对我来说是成功的!如果要查找/ var / folders ...,请从Finder的“转到”菜单中选择“转到文件夹”,然后输入/ var /作为文件夹的位置。
Patricia 2014年

在/ var / folders指令上+1 ...清理和删除DerivedData的工作虽然有效,但确实
起到

1
1.清理构建2.重置模拟器3.重新启动Xcode解决了我的问题。
艾伦·董

警告!请注意,删除其中的内容/var/folders/可能会导致严重问题,并可能导致必须从故障恢复控制台完全重新安装OSx!
Magnus W

18

除了Command + Option + Shift + K,我还找到了另一种方法。在XCode 4.2中,可以从右上角的图标打开组织器。您可以从那里清除所有档案和保存的项目选项。这对我的情况有所帮助(我在mainBundle中看到已删除的旧文件)。


3
是的,比起手动清除〜/ Library / Developer / Xcode / DerivedData,这是一种更简便的方法
Tieme 2012年

10

我一直在拔头发,因为我以为自己有同样的问题。在构建应用程序时,我在iPhone上没有得到与模拟器上相同的结果。

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

是的,我是新来的!:)


2
我有类似的问题。命令-option-shift-K没有用。已删除... DerivedData,无解。原来更改顶级XIB只会更改英语版本,而我正在使用荷兰语版本的XIB进行测试。感叹……
fishinear 2012年

1
另外,请注意,有几种方法可以本地化您的应用程序,其中会为每种语言创建单独的文本文件。在这种情况下,更改.xib无效。
dandan78

7

要删除所有派生数据并/var/folders使用此小Ruby脚本删除模块缓存。

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/为我解决了一个错误。


1
导致“致命错误:AST文件格式错误或损坏:'无法加载模块'的明显错误,以及Xcode建议的温和解决方案的失败,仍然在Xcode 6.1中发生。退出Xcode并手动清除〜/ Library / Developer / Xcode / DerivedData的解决方案仍然有效。我不需要打扫那里的所有东西。只有两个子文件夹:ModuleCache和名称与问题项目相关的子文件夹。
杰里·克里诺克

5

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

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

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


1

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

Codegen:为我解决了。

在此处输入图片说明



0

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


0

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

有时,仅在“派生数据”目录上调用rm -rf会留下一个或两个缠绵的文件,但是我的脚本会循环运行,直到删除所有文件。


0

我几乎尝试了所有方法,但还是无济于事,是什么使我禁用了SIP(系统集成保护),但它不起作用,我不知道何时何地会发生什么,但是系统文件在某处变得混乱并导致此...虽然可能存在风险显然要禁用它

这是怎么

1.启动Mac并按住[command] + [R]键以访问恢复分区。

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

3.在Terminal中输入以下命令,然后按Enter执行:csrutil disable

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


1
听起来确实有风险。SIP做什么?
Tieme

系统完整性保护可保护标记为保护的系统文件和目录。从根本上为您的系统增加了安全性,甚至限制了sudo命令的功能
Castro Zwelithini 16-10-19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.