【问题标题】:Why does git add&remove the Storyboard <classes> section repeatedly?为什么 git add&remove 故事板 <classes> 部分重复?
【发布时间】:2012-05-06 00:33:41
【问题描述】:

当保存故事板并将更改提交到 git 时,很有可能整个 &lt;classes&gt; 部分将从源代码控制 (git) 中删除或添加。我在命令行上使用 git,而不是 XCode 集成 UI。

首先它看起来像这样:

+    <classes>
+        <class className="CPTGraphHostingView" superclassName="UIView">
+            <source key="sourceIdentifier" type="project" relativePath="./Classes/CPTGraphHostingView.h"/>
+        </class>
...
+    </classes>

在下一次提交中,它看起来像这样:

-    <classes>
-        <class className="CPTGraphHostingView" superclassName="UIView">
-            <source key="sourceIdentifier" type="project" relativePath="./Classes/CPTGraphHostingView.h"/>
-        </class>
...
-    </classes>

为什么会这样,更重要的是:我怎样才能阻止它?

【问题讨论】:

  • 它是真的添加和删除,还是在每个提交中移动(即在每个提交中都显示为添加和删除)?因为后者似乎更有可能。
  • 提交是否在同一台计算机上完成?如果不是,它们是由完全相同版本的 Storyboard 完成的吗?
  • @JanHudec 在一个提交中添加并在另一个提交中删除。我可以理解移动代码块,但这发生在单独的提交中。我们是 3 位开发人员,将研究您提到的两个方面。
  • @JanHudec 故事板&lt;document ... systemVersion="..."&gt; 偶尔会在11D5011D50b 之间切换。不知道这是怎么回事,是否可能是原因。
  • @john.k.doe 我们发现这根本不重要。因此,当我们提交或合并时,我们会尽量保持前一次提交的状态以保持低噪音。

标签: ios xcode git uistoryboard


【解决方案1】:

(此回答是个人经验,并非正式回答)

.storyboard xml 文件中的classes 部分列出了您在项目中拥有的所有视图控制器,以便

  1. 当您在 Interface Builder 中选择 UI 元素时,允许 Assistant Editor 显示正确的源文件,并且
  2. 允许 Identity Inspector(右面板)显示自定义类的选项。

我猜这个部分是一个缓存,当上面列出的两种用途都没有使用一段时间时,它就会被淘汰。

这个部分首先出现的事实意味着忽略它是安全的,因为它是根据需要自动生成的。如果您已经提交了它,然后在 diff 上显示为已删除,请打开 Identity Inspector,下拉自定义类下可用的类列表,然后再次查看整个部分是如何存在的。

【讨论】:

  • 这是一个很好的解释。但是,有没有办法避免这种情况?有什么方法可以告诉 Xcode 将该部分永久保留在 Storyboard 上,而不是在 Xcode 喜欢它时将其删除,并在您打开 Storyboard 时再次将其添加回来?它与提交混淆并且很麻烦。
【解决方案2】:

根据我的经验,只有当您打开情节提要并出现与类存在相关的错误时,才会发生删除。这方面的一个例子是在合并冲突尚未解决时打开故事板。一个或多个类可能无法解析。在这种情况下,界面生成器似乎正在删除整个部分,而不仅仅是有问题的类。

对我来说,在补丁准备好后再次打开情节提要很容易修复,以防我看到删除。如果所有问题都已解决,则重新生成该部分。如果不是,则表示我的项目设置有问题,无论如何我都不应该提交。

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 2014-07-09
    • 2020-08-11
    • 2013-06-02
    • 1970-01-01
    • 2012-04-10
    • 2014-05-16
    • 2011-12-29
    • 2011-01-12
    相关资源
    最近更新 更多