2

Hillegass の第 8 章に従って、RaiseMan アプリケーションを実装しました。次に、同じプロセスに従って、受講している Cocoa プログラミング クラスの演習用のコードを実装することにしましたが、ビルドして実行した後、次の非常に不可解なエラー メッセージが表示されました。

クラス _NSControllerObjectProxy のオブジェクト <_NSControllerObjectProxy: 0x100460e30> から BOOL を作成できません

このエラー メッセージの意味がわかりません。Google で検索するといくつかヒットしましたが、それらの対策は、私がすでに行っていたことを実行することであると思われました。

Interface Builder で行ったすべての接続と割り当てをじっと見つめましたが、明らかに間違っているようには見えません。

そこで、デバッガーに入り、MyDocument クラスの init メソッド内にブレークポイントを設定しましたが、2 回呼び出されています。どうしてそれが起こり得ますか?init メソッドが 2 回呼び出されるようにするには、何を探す必要がありますか? スタック トレースは、init が自分で作成したのではないシステム関数によって呼び出されることを示しています。

比較のために、Hillegass の第 8 章に続くプロジェクトに戻り、MyDocument クラスの init メソッド内にブレークポイントを設定しました。これは 1 回呼び出されています (これは予想されることです)。

4

2 に答える 2

6

クラス _NSControllerObjectProxy のBOOLオブジェクトから作成できません<_NSControllerObjectProxy: 0x100460e30>

BOOLプロパティをコントローラーにバインドし、モデル キー パスを指定していないようです。enabledほとんどの場合、またはなどの Cocoa ビュー クラスの組み込みバインディングの 1 つをバインドしましたeditable

バインドしたビューの nib を調べ、それらがすべて正しいモデル キー パスにバインドされていることを確認しますenablededitable

于 2009-10-17T19:31:19.383 に答える
1

私はちょうどこれに遭遇しました。そして、以前に何か奇妙なものを見たことを思い出しました。私のXIBファイルには、「ファイルの所有者」オブジェクト(これは実際にXIBファイル内のドキュメントを表すものです)に加えて、「マイドキュメント」オブジェクトがありました。どうやってそこにたどり着いたのかわかりませんが、IBで削除して再コンパイルし、[MyDocument init]が一度だけ呼び出されるようになりました。

于 2009-10-23T08:42:12.917 に答える