【问题标题】:Why is my XIB modified every time I open it in IB?为什么每次在 IB 中打开我的 XIB 都会被修改?
【发布时间】:2011-12-21 15:57:28
【问题描述】:

我通过项目导航器单击 XIB。它打开并立即将图标更改为灰色,显示我有未保存的更改。如果我保存更改,请单击其他文件并单击返回以重新打开它,更多更改。总是在打开时修改。

此项目中的一个 XIB 文件和另一个项目中的一对会发生这种情况。我很想知道为什么会发生这种情况,以及我现在可以做些什么来解决它并在将来防止它发生。

注意:使用 Xcode 3.2 Build 4C199 和 Snow Leopard

编辑:我在其中一个打开/修改中添加了几个从 XML 中删除的部分

        <key>outlets</key>
        <dict>
            <key>addEventTabBarController</key>
            <string>UITabBarController</string>
            <key>window</key>
            <string>UIWindow</string>
        </dict>
        <key>superclass</key>
        <string>NSObject</string>

        <key>outlets</key>
        <dict>
            <key>courseTableCell</key>
            <string>UITableViewCell</string>
        </dict>
        <key>superclass</key>
        <string>UITableViewController</string>

【问题讨论】:

  • 我有一个会被修改,如果你打开它然后离开它。

标签: iphone ios interface-builder xcode4.2 xib


【解决方案1】:

我最终将此问题提交给 Apple。他们的反应是毫无启发性的,并且谈论可能的优化、为新版本的 Xcode 更新元数据等。

我从点击文件到点击文件跟踪了 100 个版本。正如 Apple 所说,它每次都在“优化”,但每次它只是移动了一些 XML 标签。从来没有对它自己的优化感到满意,它会在下次打开它们时移动它们。我认为它是 Xcode 的一个错误,很烦人,但基本上是无害的。

这只发生在旧的 XIB 中,或者将内容移动到新的 XIB 文件中,或者(实际发生的情况)Storyboards 解决了这个问题。

【讨论】:

  • 在我看来,如果他们想优化这些东西,他们应该采取与优化构建配置相同的方法,并且至少在进行此类更改之前询问用户......
  • 即使在 Xcode 6 和 7 中也会发生这种情况......我认为 Xcode 的创建者 Apple 永远不会解决这个问题!可耻!
【解决方案2】:

我不想使用其他答案之一中建议的情节提要。 这是另一种简单/快速的解决方法。

选择 xib 视图文件时,转到检查器上的 Interface Builder 文档属性。 然后你需要

  • 将“部署”更改为与 Project SDK 不同的内容,在我的情况下,我将其设置为最新的 iOS 版本(当前为 iOS 6)。
  • 将开发更改为与“先前版本”不同的内容,在我的情况下,我将其设置为最新的 Xcode 版本 4.5

我在 Lion 上运行 Xcode 4.5.2。

希望这会有所帮助。

【讨论】:

  • 这太好了,帮了我一把!
【解决方案3】:

基本思想...

XCode 存储了许多不同类型事物的版本号。如果您查看 XIB 的 XML 表示,您应该会发现这些小改动中的绝大多数都在这些版本号中。

它是如何发生的......

每当您更新 Xcode 时,Xcode 中的许多不同内容(通常在 SDK 中)都会更新。如果您对 XIB 文件进行更改,这些版本更改将保留在 XIB 中。因此,如果您碰巧打开了 XIB 文件,版本更改就会被放入该文件中。一旦您构建或运行应用程序,这些更改就会保存到文件中。

但是我有一段时间没有更新 Xcode 了!

好吧,每当您进行最后一次更新时,XIB 文件都会在您打开它们时使用新版本号进行更新,随着时间的推移一个一个地更新。

【讨论】:

  • 虽然我毫不怀疑 XCode 可以在版本之间重新构建和修改文件,但这不是这里发生的事情。如果我继续打开文件并保存更改,我可以在 5 分钟内打开/修改并保存更改 50 次。我还查看了修改,它们似乎集中在插座和其他部分,这似乎可能导致文件损坏......但它仍然有效,所以它表明我对 XIB 中的 xml 如何了解得很少文件有效。
【解决方案4】:

编辑 XCode 4 现在更好了,(也许),如果你想投反对票,那么问问自己,“我是否使用版本控制从 XCode 3 迁移到 XCode 4?”如果不是,那么您不知道自己在做什么,请不要对此投票。如果你有,你就知道你受了多大的苦,但是是的,否则这个问题已经死了。如果您确实发现自己打开了旧项目,只需重新创建它并复制文件即可。

我不知道确切的答案,但我知道这些东西会帮助你找到答案:

XCode 4 因搞砸事情而臭名昭著。 如果您将您的目录放入版本控制系统 (Git),然后抓取 GitBox 并保存您的项目以赋予它一个状态并从中创建一个 git 存储库。 git repo 将保存状态。 Gitbox 将直观地向您显示更改。

打开后,您可以在 GitBox 中右键单击该文件并点击“查看差异”或“查看更改”等。

您将自动滚动到这些行。如果您可以将 XML 与 Xib 关联起来,您就可以弄清楚发生了哪些变化。

我从狮子变成了雪豹,所以我不再处理这个了。

【讨论】:

  • 我正在使用修订控制已经查看了更改。有时我发誓它只是在文件中移动 XML。其他时候它会进行实际更改,看起来它们会影响我的各种组件......但是当我运行我的代码时有 0 个明显的影响。如果它只是在 4 个不同的“变化”之间切换,我不会感到惊讶
  • 你说从 Lion 回到 SL 可以解决这个异常问题?是 Xcode 版本造成了差异还是操作系统? Lion 的版本控制是否可能启动?
  • 我从未切换到 Lion,我一直在使用 Snow Leopard,显然我遇到了这个问题。 :)
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 2021-10-02
  • 2023-03-29
  • 2021-01-21
  • 1970-01-01
相关资源
最近更新 更多