3

有时 IB 会保留旧的或坏的参考资料,我似乎无法删除或编辑它们。

编辑我已将此作为一个 wiki 问题,目的是收集有关该现象的更多数据。欢迎回答涉及其他编码人员遇到此问题的情况。

昨晚我用桌子控制器再次发生了这种情况。当我创建一个尖峰项目来尝试重现错误时,系统按我预期的方式工作。然后回到实际项目中,即使我删除了 xib 文件和所有涉及的控制器,不良行为仍在继续。

创建一个没有任何原始(有问题的)xib 和 nib 文件的全新项目可以正常工作。

这个问题不是关于这个事件的细节,而是关于 IB 中的这类事件。

有没有人知道更多关于这种不良 IB 行为的信息,并且可能是一种比破坏项目更时尚的方式来消除它?

请注意,删除有问题的 IB 文件并在同一个项目中重新创建它们在过去对我来说并没有解决这个问题,只有全新的项目。

关于何时/如何观察/创建此故障的示例的答案也是受欢迎的。

4

14 回答 14

3

我通过单击文件 > 读取类文件 ... 并将 IB 指向我的类文件来解决这种类型的缓存问题。宾果游戏,它读得很好,一切正常。:-)

于 2009-09-22T18:47:57.493 回答
1

I just had a project where this happened and I was banging my head trying to get it to update properly in IB 3.2 (732). I really did not want to redo the xib from scratch. I tried drag/drop of the *.h files, restarting, reloading everything and it didn't work. I also tried File->Read Class Files which didn't work. Strangely though, File->Reload All Class Files worked like a charm.

于 2009-10-24T22:57:53.107 回答
1

我唯一真正的建议是在http://bugreporter.apple.com/提交错误报告,并附上可重现的项目;根据我的经验,Apple 确实会考虑这些事情。也就是说,您说在同一个项目中重新创建 XIB 并没有修复错误。更换链接的另一端怎么样?即重新创建头文件并将新头文件与现有的XIB一起使用?也许这足以促使 IB 更新其模型。

于 2009-01-17T11:00:57.327 回答
1

我发现 File > Read Class Files 为单个 nib 文件修复了它,但是 nib 不会与任何未来的更改保持同步,并且该修复也不适用于项目中的任何其他文件。

重新启动和/或清洁建筑也没有帮助,但新项目很好。我在 Xcode/IB 版本 3.2.2 中发生了这种情况——到目前为止,唯一的解决方案是在新项目中重建代码。

于 2010-03-28T10:29:13.003 回答
0

再次阅读有问题的类文件为我解决了这个问题。

于 2011-09-08T14:55:22.643 回答
0

我遇到了同样的问题。当我打开一个使用旧 Xcode 版本制作的项目时会发生这种情况。Interface Builder 无法与 Xcode 正确同步。是的,我可以使用“文件->读取类文件...”手动更新 IB 缓存,但即使使用此方法,垃圾仍然存在。我的意思是旧的 IBOutlet 和 IBAction 仍然出现。

于 2009-09-25T23:43:06.457 回答
0

你保存头文件吗?Interface Builder 解析磁盘上的头文件的内容,而不是 Xcode 编辑器中未保存的文件。如果您在头文件中添加了一个出口,并在没有先保存的情况下切换回 IB,则 IB 将看不到新的出口。

于 2009-05-20T06:27:19.963 回答
0

也许不是您想要的答案,但它是:不要使用 IB!:-)

我在使用它时也遇到了麻烦,即使完全按照某些 Apple 文档中描述的步骤进行复制,从头开始尝试多次。所以三天后我就放弃了,开始以编程方式做所有事情,半天就实现了我的程序。从那以后我再也没有回头。我只是偶尔启动 IB 来查看大小,所以我可以将它们输入到我的代码中。

随着时间的推移更新我的 GUI 可能会变得不那么容易,但如果你的故事是一个真正经常出现的问题,我很高兴我与野兽分道扬镳!

于 2009-01-17T10:43:02.807 回答
0

当你说旧的或坏的引用时,你的意思是它试图将 UI 元素链接到不再存在的类中的出口或动作吗?如果是这种情况,请转到连接面板 (cmd-5) 并选择 nib 文件中的对象。它应该向您显示所有连接。任何文本变灰并带有感叹号的地方都应删除(悬停并单击 x)。

在 IB 中,您只是连接到应用程序启动时您的班级将是什么样的“承诺”。IB 通常只允许您连接可以实现该承诺的东西,但是如果您更改 Xcode 中的标头,IB 除了警告您之外无能为力。

于 2009-01-17T11:08:37.187 回答
0

快速简单的解决方案: - 无需重新启动计算机,无需新项目。. .

不幸的是,这篇文章中的任何建议都没有为我解决这个问题(除了重新启动我的计算机然后开始一个全新的 xcode 项目)

我的解决方案... 无论如何,唯一的其他快速修复(至少对我使用 Perfoce 有效)是撤销(恢复)我在修订控制系统中的更改。我们正在使用 Perforce,这似乎工作得很好。

我不必创建一个全新的 xcode 项目,无需重新启动计算机,甚至无需重新启动 xcode,无需手动删除文件或引用,无需重新引用类,无需点击和拖动垃圾来处理,无需手动更改设置, ETC。

DOWNFALL... 如果您在 xcode 和 IB 周围走来走去一段时间,并进行了很多更改,然后突然出现问题...您当然会丢失恢复的文件中的所有内容... QQ

glhf-eric

旁注...这是一个非常糟糕的错误,并且肯定会消耗大量时间,尤其是如果您是第一次遇到此问题(我相信这里的每个人都意识到,时间对开发人员来说至关重要)。这是我第一次对 apple/obj c/xcode(2 个月前开始)感到失望,我觉得这不会是最后一次:/

于 2013-05-22T04:22:09.577 回答
0

尝试对代码进行干净的构建,然后查看旧引用是否保留在 xib 中

于 2009-01-19T08:37:23.117 回答
0

您没有说问题是否在重新启动后仍然存在,所以我认为可能是这个问题:Xcode 的构建过程中存在一个罕见的错误,有时旧版本的输出文件卡在 /tmp 文件夹中并且不会得到更新。IIRC,最简单的解决方案是清理目标并重新启动计算机。

于 2009-01-19T09:07:35.410 回答
0

当我从一个旧项目创建一个新项目时,我在 IB 上遇到了完全相同的问题。我可以将 IB 与新的 .h 文件同步,但是当我右键单击对象时,IB 仍然给出了删除的引用(来自旧项目)(类名“MainController”从旧的到新的相同)即使那些更新后的代码中根本不存在引用。

“你没有说问题是否在重启后仍然存在,所以我认为可能是这个问题:Xcode 的构建过程中存在一个罕见的错误,有时旧版本的输出文件卡在 /tmp 文件夹中并且不会得到更新。IIRC,最简单的解决方案是清理目标并重新启动计算机。” 我试图清洁目标,但没有奏效。

但是,一旦我删除了 MainManu.xib 并创建了一个新的(手动设计界面会做一些工作),旧的引用就消失了。

于 2009-06-26T07:16:41.453 回答
0

刚刚发生了这种类型的事件,并通过使用 XCode 的重构将类重命名为不同的名称来修复它。似乎让事情重新开始。

于 2010-07-09T04:07:42.983 回答