2

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

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

我不知道这个错误信息是什么意思。进行谷歌搜索带来了一些点击,但他们的补救措施似乎是做我已经在做的事情。

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

所以我进入调试器并在 MyDocument 类的 init 方法中设置了一个断点,它被调用了两次。怎么会这样?我应该寻找什么会使 init 方法被调用两次?堆栈跟踪显示 init 是由我们自己编写的系统函数调用的。

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

4

2 回答 2

6

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

看来您已将BOOL属性绑定到控制器,但未指定模型键路径。最有可能的是,您绑定了 Cocoa 视图类的内置绑定之一,例如enabledor editable

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

于 2009-10-17T19:31:19.383 回答
1

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

于 2009-10-23T08:42:12.917 回答