为什么每次我在IB中打开它时都修改了XIB?

我通过项目导航器点击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> 

我把这个问题提交给苹果公司。 他们的回应是没有意义的,谈论可能的优化,更新Xcode新版本的元数据等等。

我从单击和文件上跟踪了100个版本。 正如苹果所说的那样,它每次都在“优化”,但每次只是简单地移动一些XML标签。 从未对自己的优化感到满意,它在下一次打开时将其移动。 我认为这是一个Xcode的烦人,但大多是无害的。

这只发生在旧的XIB上,或者将内容移动到一个新的XIB文件或者(真的发生了)故事板摆脱了这个问题。

我不想按照其他答案中的build议使用故事板。 这是一个替代简单/快速修复。

selectxib视图文件时,转到检查器上的界面生成器文档属性。 那么你需要

  • 将“部署”更改为不同于项目SDK的东西,在我的情况下,我将其设置为最新的iOS版本(当前是iOS 6)。
  • 将开发改为“以前的版本”,在我的情况下,我把它设置为最新的Xcode版本4.5

我在Lion上运行Xcode 4.5.2。

希望这可以帮助。

基本理念…

XCode存储了许多不同types的东西的版本号。 如果您查看XIB的XML表示forms,则应该发现绝大多数这些小改动都在这些版本号中。

怎么回事

每当你做Xcode的更新时,Xcode中的许多不同的东西(通常在SDK里面)都会得到更新。 如果您对XIB文件进行了更改,则这些版本更改将保留在XIB中。 所以,如果你碰巧打开一个XIB文件,版本的变化就会被放到那个文件中。 只要你build立或运行应用程序,那些更改被保存到文件。

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

那么,每当你做了最后一次更新,XIB文件将随着新版本号的更新而逐步更新。

编辑 XCode 4现在比较好,(也许),如果你想把它投票,那么问自己:“我是否使用版本控制从XCode 3迁移到XCode 4? 如果不是,那么你不知道你在做什么,请不要对此投票。 如果你有,你知道你受了多么严重,但是,这个问题是死的。 如果您发现自己打开了一个旧项目,只需重新创build并复制这些文件即可。

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

XCode 4是一个臭名昭着的事情。 如果你把你的目录放到一个版本控制系统(Git)中,然后抓住GitBox并保存你的项目给它一个状态并创build一个git仓库。 git回购会保存状态。 Gitbox会直观地显示你的变化。

打开之后,你可以在GitBox上右键单击该文件,然后点击“查看差异”或“查看更改”或其他内容。

您将自动滚动到行。 如果您可以将XML与Xib相关联,则可以确定哪些更改。

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