在Xcode Document App中:为什么要调用MyDocument的init方法两次?

时间:2009-10-17 16:58:00

标签: cocoa cocoa-bindings

我按照Hillegass的第8章在那里实施了RaiseMan应用程序。 然后我决定按照相同的过程来实现我正在进行的Cocoa编程类中的练习代码,但是在构建和运行之后我得到了以下非常神秘的错误消息。

无法从对象< _NSControllerObjectProxy:0x100460e30>创建BOOL。 _NSControllerObjectProxy类

我不知道此错误消息的含义。进行谷歌搜索提出了一些点击,但他们的补救措施似乎是做我已经做的事情。

我盯着我在Interface Builder中创建的所有连接和分配,没有任何看起来明显错误。

所以我进入调试器并在MyDocument类的init方法中设置断点,并且它被调用两次。怎么会发生这种情况?我应该寻找什么才能使init方法被调用两次?堆栈跟踪显示init由我们自己没有编写的系统函数调用。

为了比较,我回到了Hillegass第8章之后的项目,并在MyDocument类的init方法中设置了一个断点,并且它被调用一次(这是人们所期望的)。

2 个答案:

答案 0 :(得分:6)

  

无法从类_NSControllerObjectProxy的对象BOOL创建<_NSControllerObjectProxy: 0x100460e30>

您似乎已将BOOL属性绑定到控制器,并且未指定模型键路径。最有可能的是,您绑定了一个Cocoa视图类的内置绑定,例如enablededitable

通过您的笔尖查看您绑定了enablededitable的视图,并确保它们都绑定到正确的模型关键路径。

答案 1 :(得分:1)

我自己就碰到了这个。然后我记得曾经看过一些奇怪的东西,当时的意义并没有让我感到震惊。在我的XIB文件中,除了“文件所有者”对象(实际上代表XIB文件中的文档)之外,还有一个“我的文档”对象。我不知道它是如何到达那里的,但是我在IB中删除了它,重新编译,并且presto,[MyDocument init]现在只被调用一次。

相关问题