如何完全删除所有 Xcode 程序和缓存文件?

Posted

技术标签:

【中文标题】如何完全删除所有 Xcode 程序和缓存文件?【英文标题】:How do I completely remove all Xcode program and cache files? 【发布时间】:2018-10-31 21:50:00 【问题描述】:

用更简单的例子创建了一个新问题here。

我在 Xcode 中遇到了一些奇怪的行为,包括提供不正确的变量值,以及在我离开时编译良好的旧项目中出现语法错误。

回到干净的 Xcode 的最佳方法是什么? 应用程序目录中有两个(或更多)Xcode 可执行文件是否存在问题?我一次只运行一个版本...

是否可以完全删除所有程序数据文件和缓存文件,就好像我从未安装过Xcode一样?

如果没有,是否有可以安全删除的缓存/等列表?

这是我迄今为止尝试过的,基于 Stack Overflow 搜索:

清理项目 (CMD+OPT+K)。重新启动 Xcode。重启 Mac 已下载 Xcode 9.4.1。运行这个版本(没有删除 Xcode 10)。可以运行任一版本 已验证的 Swift 版本设置为 4.1(4.2 不是一个选项) 已删除派生数据文件夹。文件> 项目设置.. 点击 派生数据文件夹旁边的右箭头。已删除特定项目 文件。还尝试删除整个文件夹

这是我的悲惨故事:我已经在一个项目上工作了大约 6-8 周,在 High Sierra 上使用 Xcode 9.4.1。我是一个新手,所以我创建了一些简单的“概念验证”应用程序来了解文本视图、属性字符串、Web 视图等。这些小项目中的每一个都编译并运行良好。

我将这些功能组合到一个应用程序中,并添加了一个 Cocoa Pod 库。同样,一切都编译得很好。我正在调试代码中的简单问题。在某一时刻,Xcode 停止在我的代码的变量显示中显示正确的值。我只能使用 print() 语句进行调试,它总是显示正确的变量值。

我升级 (?) 到 Xcode 10,然后升级到 Mojave 以尝试解决 Xcode 的不正确变量值。出现了其他问题,包括 evaluatejavascript 的已知问题。所以我决定回到莫哈韦之前的状态,回到工作状态。我使用 Time Machine 在 High Sierra 下恢复到 Xcode 10。

现在我的项目出现编译错误。即使是我的简单概念验证应用程序也有编译错误。所以我一直在尝试回到可编译的代码。

我还应该尝试什么来确定发生了什么变化?

这是产生语法错误的特定属性字符串代码:

let titleAttributes = [NSAttributedString.Key.font: NSFont.boldSystemFont(ofSize: 22)]

给出错误:

Type 'NSAttributedString' has no member 'Key'

我在 segue 上也遇到了错误:

performSegue(withIdentifier: "showSecondVC", sender: self)

报错

Cannot convert value of type 'String' to expected argument type 'NSStoryboardSegue.Identifier'

为这篇长文道歉。在 Unix 下,很容易将用户帐户或应用程序恢复到已知的初始状态。在 Mac OS X 下似乎更难...

感谢您的任何建议!

【问题讨论】:

NSAttributedString.KeyNSStoryboardSegue.Identifier 是 Swift 4.2,NSAttributedStringKeyNSStoryboardSegueIdentifier 是 Swift 4.1。通过 Xcode 中的源代码控制,可以非常方便地恢复到项目的先前版本。 NSAttributedString.Key 适用于 Swift 4.2。您的问题与 Xcode 无关,与 macOS 版本无关。为您的 Swift 版本使用正确的 API。最好的办法是让 Xcode 为您完成代码。 @vadian 感谢您确认这是 Swift 4.2 代码。我正在使用 Git。在将 Swift 语言从“Swift 4”更改为“Swift 4.2”之后,这确实可以在 Xcode 10 中编译。 Xcode 9.4.1 是否支持 Swift 4.2?我的 9.4.1 Swift 语言选择只有“Swift 3.3”或“Swift 4.1”。我一直在使用 Xcode 10 吗?我在调试期间重新安装了 Xcode 10,那么如何确定我原来的 Xcode 10 安装日期?这是在 App Store 日志中,还是在 Xcode 特定日志中?这些都不能帮助我解决 Xcode 打印不正确的变量值的问题,但它很有帮助,感谢您的帮助! @maddy 如何确定特定 Swift 版本的给定方法的语法?是否有描述随时间变化的方法的中心文档,或者我是否需要查看特定的发行说明?你能指点我这个信息的链接吗?谢谢 【参考方案1】:

你说的问题好像是Swift版本的。

为了回答您的问题,当您下载一个新的 Xcode 应用程序(是的,您可以在同一台计算机上拥有多个 Xcode 应用程序)时,一切都在这个巨大的应用程序中。

所有本地数据都在文件夹内

~/Library/Developer/Xcode/

您可以在其中找到包含大量数据的多个文件夹。如果您对 Ide 大小有疑问,您可以检查在 UserData 文件夹中找到的“IDEPreferencesController.xcuserstate”。

【讨论】:

你是说可以删除 ~/Library/Developer/Xcode/* 中的所有文件吗?如果我删除这些文件,然后运行 ​​Xcode,是否会根据需要重新创建任何需要的文件?本质上使整个目录树成为缓存?如果是这样,那就太好了。有没有关于这些文件和目录的文档或教程? @SDGary 不,不要从 ~/Library/Developer/Xcode/ 中删除所有文件。有些东西你可以安全地删除,但你可能想保留很多东西。 谢谢@maddy 我怎么知道哪些文件/目录可以删除,哪些不能?我想在此处保留哪些信息?这是如何记录的?再次感谢! 您可以清理:1) DerivedData(一种用于更快构建的缓存,Xcode 会在必要时自动重建它)和 2) ios DeviceSupport 包含每个 IOS 版本的文件夹(例如我的有 12.0、12.0.1 和 12.1:我刚刚删除了前两个,因为我已经将所有设备都更新到了最新版本) @UmbertoMigliore 这个答案有帮助,所以我将其标记为正确。我的问题是 ~/Library/Developer/Xcode/UserData/Debugger/CustomDataFormatters 中的虚假文件。这导致 Xcode 调试器为每个字符串打印“FAIL”。感谢您的帮助!

以上是关于如何完全删除所有 Xcode 程序和缓存文件?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 缓存目录

如何卸载 Xcode 6 并删除所有相关文件

如何干净的卸载Xcode和缓存

Java怎么清除缓存

清除文件缓存以重复性能测试

python 如何释放缓存?