从git工作流的角度来看,当多人在故事板上协作时,故事板是一件非常痛苦的事情。例如,.stumbler文件中的XML有其起始
这是愚蠢的,但大多是无害的。然而,让我们担心的是,在其他时候,只要在< code>git pull之后打开故事板,就会自动对其进行其他一些更改。也就是说,Alice对故事板进行更改,提交并将其推送到存储库。Bob然后提取Alice的更改,并打开故事板进行进一步的更改。当他打开故事板时,文件图标立即变为已修改但未保存的状态,一个< code>git status显示发生了许多奇怪的变化。所有这些都不需要Bob自己修改或保存文件。
我们看到的最常见的自动更改是整个的消失或重新出现
还有人看到这种行为吗?这是Xcodebug还是我们的一台或多台开发Mac上的配置问题?我们在与XIB文件协作时看到了一些类似的行为,但故事板似乎更容易受到这种影响。
这不是一个错误,这是Xcode处理故事板文件的结果。我正在为故事板文件(GitHub链接)编写一个区分和合并程序,我花了几个小时分析故事板文件的逻辑以及Xcode如何处理它。这是我的发现:
>
为什么故事板文件中会发生奇怪的变化?Xcode使用NSXML API将故事板文件解析为基于NSSet的逻辑树结构。当Xcode需要编写更改时,它会基于逻辑树结构创建一个NSXMLDocument
,清除脚本文件并调用XMLDataWithOptions:
再次填充文件。由于集合不保留其元素的顺序,即使是最轻微的修改也可能会更改整个情节提要XML文件。
为什么类标签会随机消失或重新出现?
我没有逆向工程Xcode;我通过使用Xcode和故事板文件进行实验,得出了这些观察结果。尽管如此,我几乎100%肯定它是这样工作的。
结论:
MyControlller1
视图控制器。打开故事板文件,发现如下内容
这是XCode 4.5中的一个错误,我希望它得到修复,是的,它是一个PITA。
这是苹果的全部错误
如何避免Xcode无端编辑故事板文件?