【问题标题】:How to fix a project that Interface-Builder fubar'd如何修复 Interface-Builder fubar'd 的项目
【发布时间】:2011-05-07 03:52:04
【问题描述】:

帮助我在 XCode4 中取消 fubar 界面生成器。

我在 interface-builder 中创建了一个按钮,并在视图代码中为它定义了一个 IBAction 方法。它运行良好。然后我使用 XCode 的重构/重命名工具重命名了按钮的操作方法。它运行良好。

然后我通过选择按钮并按删除键删除了界面生成器中的按钮。当我重建项目时,按钮仍然存在于模拟器中。回到界面生成器,按钮消失了。代码中没有对按钮的引用,但是按钮的IBAction方法还是有的。

更糟糕的是,按钮的原始操作方法被调用,这当然会引发选择器未找到的运行时异常。当我对原始操作方法的名称进行项目搜索时,没有找到任何东西,但运行时仍在尝试调用它。我做了一个“清理”并重建,但没有快乐。

如果我尝试将 .xib 文件作为 ASCII 属性列表打开,它会告诉我数据已损坏。 (我想通了。)

除了删除 .xib 文件并创建一个新视图之外,还有什么方法可以解决这个问题吗?

如果不删除二进制文件,“clean”会做什么?

感谢您的帮助!

【问题讨论】:

  • 如果您在文本编辑器中打开 .xib,您会发现什么奇怪的地方吗?
  • @Jon Reid - 文本编辑器中的 .xib 看起来不错。看起来 xib 的 xml 表示中的对象与 Interface Builder 中的图形表示中的对象相同。不知何故,XCode 挂在某处的陈旧引用上。
  • 在尝试重现此内容后,我相信这是由于我重命名了 .xib 文件造成的(我在发布原始问题时忽略了提及,抱歉。)我使用了 XCode“重构”工具重命名我的一些对象,但我看不到如何使用 Refactor 重命名 xib 文件,所以我只是在 Project Navigator 中重命名它。可能不是一个好主意。
  • 啊,好的。重命名 xib 没有任何问题 - 您只需复制指定名称的更改(在代码中或在其他 xib 中)。

标签: interface-builder xcode4


【解决方案1】:

尝试 iOS 模拟器 -> 重置内容和设置。 (为了节省时间,Xcode 仅在资源发生更改时才尝试在启动前复制资源,但如果事情变得糟糕……)

【讨论】:

  • 好提示。我不认为这引起了我的烦恼。在尝试重现问题后,我认为这是由于我重命名了一个 .xib 文件造成的。
  • 这已经很老了,但似乎仍在发生。只是有一个 XIB 并没有改变我所做的任何事情(添加按钮、设置目标、文本......)。从模拟器中删除应用程序有帮助。
【解决方案2】:

清洁对我不起作用。根据我的经验,Xcode 会保留“已编译的 .xib”的缓存,而不考虑时间戳(尝试将 xib 换成具有相同名称的 xib)。我的解决方法是修改需要刷新的每个视图。非常令人沮丧,但它确实有效。

【讨论】:

    【解决方案3】:

    尝试在 Xcode 中构建 > 清除所有目标,它应该修复它

    【讨论】:

    • 是的,我试过 Clean 没有效果。 (顺便说一句,在 XCode 4 中,没有 Build 菜单。Clean 在 Product 菜单下,没有 Clean All。我猜它默认为 Clean All。)
    猜你喜欢
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    相关资源
    最近更新 更多