XCode/OSX 是如何做到的?将 XCode 项目移动到另一个位置。XCode 自动知道它所在的位置

RLH*_*RLH 5 filesystems xcode macos

只是一个快速的背景。我是 Windows 和 C# 的长期开发人员,为了我雇主的一个新项目,我不得不过渡到 OSX 并开始学习 iOS 开发。换句话说,我对 Mac/OSX 环境还是很陌生。

今天早些时候,我决定关闭 XCode 并重新组织我的测试和学习项目,以及我在 XCode 中创建的项目,这些项目包含我最有可能需要重用的资产。当我重新启动 XCode 时,我惊讶地发现我最近的所有项目仍然在“最近”列表中,并且它们指向新的文件位置!甜的!

XCode 如何知道我的项目位于何处?是操作系统、文件系统的功能还是 XCode 是否在系统中内置了某种形式的智能来检测这些类型的问题?

Dan*_*eck 4

几乎每个应用程序的“文件\xc2\xbb”中的便捷方法提供的“打开最近的”菜单都可以使用此功能LaunchServices/LSSharedFilesList.h(这也是存储此信息的文件的名称plist,例如~/Library/Preferences/com.apple.Preview.LSSharedFilesList.plist)。

\n\n

这些条目包含序列化的NSData(大概),您可以将其复制并写入文件,例如使用十六进制编辑器。它们包含文件的完整路径、文件所在的卷名、UUID 以及一些我目前无法理解的附加信息。我假设 UUID 用于解析文件引用(如果需要)。

\n\n
\n\n

NSURLs 可以转换为稍后可以解析的文件引用,即使文件已移动。StackOverflow 上的这个答案有更多技术信息。

\n\n
\n\n

我不确定,但 HFS+ 有唯一标识文件的inode 。NSURL 功能可能是在此基础上实现的。可观察到的行为似乎表明了这一点:如果将文件移动到不同的文件系统,则该文件将从“打开最近的文件”列表中删除,可能是因为它无法再解析。

\n