提问者:小点点

Xcode 更改未修改的情节提要和 XIB 文件


从git工作流的角度来看,当多人在故事板上协作时,故事板是一件非常痛苦的事情。例如,.stumbler文件中的XML有其起始

这是愚蠢的,但大多是无害的。然而,让我们担心的是,在其他时候,只要在< code>git pull之后打开故事板,就会自动对其进行其他一些更改。也就是说,Alice对故事板进行更改,提交并将其推送到存储库。Bob然后提取Alice的更改,并打开故事板进行进一步的更改。当他打开故事板时,文件图标立即变为已修改但未保存的状态,一个< code>git status显示发生了许多奇怪的变化。所有这些都不需要Bob自己修改或保存文件。

我们看到的最常见的自动更改是整个的消失或重新出现

还有人看到这种行为吗?这是Xcodebug还是我们的一台或多台开发Mac上的配置问题?我们在与XIB文件协作时看到了一些类似的行为,但故事板似乎更容易受到这种影响。


共2个答案

匿名用户

这不是一个错误,这是Xcode处理故事板文件的结果。我正在为故事板文件(GitHub链接)编写一个区分和合并程序,我花了几个小时分析故事板文件的逻辑以及Xcode如何处理它。这是我的发现:

>

  • 为什么故事板文件中会发生奇怪的变化?Xcode使用NSXML API将故事板文件解析为基于NSSet的逻辑树结构。当Xcode需要编写更改时,它会基于逻辑树结构创建一个NSXMLDocument,清除脚本文件并调用XMLDataWithOptions:再次填充文件。由于集合不保留其元素的顺序,即使是最轻微的修改也可能会更改整个情节提要XML文件。

    为什么类标签会随机消失或重新出现?

    我没有逆向工程Xcode;我通过使用Xcode和故事板文件进行实验,得出了这些观察结果。尽管如此,我几乎100%肯定它是这样工作的。

    结论:

    • 缓存部分不重要;您可以安全地忽略其中的任何更改。
    • 与您在所有论坛上找到的相反,合并故事板文件并不是一项复杂的任务。例如,假设您更改了故事板文档中的MyControlller1视图控制器。打开故事板文件,发现如下内容

  • 匿名用户

    这是XCode 4.5中的一个错误,我希望它得到修复,是的,它是一个PITA。

    这是苹果的全部错误

    如何避免Xcode无端编辑故事板文件?