10

私は Hillegass の本「Mac OS-X 用の Cocoa プログラミング」の例に取り組んでいます。私が取り組んできたサンプル アプリケーションが起動し、次のようなメッセージが表示されることが何度かありました。

2009-03-11 00:39:19.167 CarLot[7517:10b] クラス _NSControllerObjectProxy のオブジェクト <_NSControllerObjectProxy: 0x188bf0> から NSData を作成できません

このような問題を解決するために私が見つけた唯一の方法は、インターフェース ビルダーのすべてのバインディングと属性を念入りに調べて、どこで設定を見逃しているかを確認することです。これには時間がかかります。

エラー メッセージから問題を特定する効率的な方法はありますか? このような問題を追跡するために使用できるデバッグ手法はありますか?

4

5 に答える 5

13

Apple の Dev Site には、バインディングのトラブルシューティングに関する素晴らしい記事があります。

https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/Troubleshooting.html

キーテイクアウェイ?NSBindingDebugLogLevelデバッグ情報を取得するために使用できるという設定があります。

設定するには 2 つの方法があります。

1 - デフォルトで永続的に

デフォルトは com.yourdomain.yourapplication NSBindingDebugLogLevel 1 を書き込みます

2 - デバッグ時にパラメーターとして渡す

path/to/your/app -NSBindingDebugLogLevel 1

于 2010-01-23T06:57:14.657 に答える
3

この記事では、これについて非常に簡単に説明します。

基本的には、Xib ファイルを調べて、アプリに設定したバインディングをもう少し迅速に把握できると述べています。

それが役立つことを願っています!

于 2009-03-17T05:07:52.773 に答える
1

Interface Builder 以外で設定したバインディングと属性の概要を取得する方法があるかどうかはわかりません。私の知る限り、この情報を表示する唯一の GUI です。デバッガーでアプリケーションを実行し、例外 (-[NSException raise]) でブレークして、少なくともどのオブジェクトがこのエラーを引き起こしているかを追跡できるかどうかを確認できます。これは、IB で不良な接続を特定するのに役立つ場合があります。

アプリケーションが十分に小さく、ビルドが速く、IB とバインディングを使い始めたばかりの場合は、1 つの接続を作成してテストし、それが機能するかどうかを確認してから、次の接続に進むことをお勧めします。そうすれば、どの接続または属性が問題を引き起こしているかがわかります。

誰かがこれよりも良い答えを持っていることを願っていますが、私の知る限り、IB 接続の問題を確認して特定するツールはありません。

于 2009-03-16T18:24:24.893 に答える
0

interfacebuilder ではなく、プログラムでバインディングを行うとどうなるでしょうか?

これを行うには、NSObject の次のメソッドを使用する必要があります。

- (void)bind:(NSString *)binding toObject:(id)observableController withKeyPath:(NSString *)keyPath options:(NSDictionary *)options

于 2009-03-17T08:58:48.957 に答える
0

最初は気付かなかったのですが、オブジェクトの接続インスペクターを見ると、バインドされているすべてのリストが表示され、項目にカーソルを合わせると、対応する要素が強調表示されます。

これは、テーブル列に何かを再度バインドした場合に便利です。

于 2009-04-06T05:32:54.417 に答える