2009-03-16 4 views
10

私はCocoaを初めて使い、Hillegassの書籍「Cocoa programming for Mac OS-X」の例を試しています。私が作業しているサンプルアプリケーションが起動し、次のようなメッセージが表示される場合があります:Cocoa - XcodeとInterface Builderの間のバインディングの問題をデバッグするための推奨テクニック

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

の私はこのような問題を解決するのを発見した唯一の方法は、バインディングのすべてを通過し、私はいくつかの設定を見逃している場所を確認するには、インターフェイスビルダーの属性苦労しすることです - どのすべて時間がかかる!

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

+0

この質問は私の質問に私が思いついた問題の1つです。http://stackoverflow.com/questions/623653/how-do-you-read-a-third-party-cocoa-projectあなたが得る答えに非常に興味があります。 – mouviciel

答えて

3

This Articleこれについては非常に簡単に話します。

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

希望に役立ちます!

+0

記事は、記事の –

+0

更新されたリンクはhttp://www.speirs.org/blog/2007/12/5/what-are-xib-files.htmlで死んでいます –

1

私は、Interface Builder自体以外で設定したバインディングと属性の要約を得る方法があるかどうかはわかりません。私が知っている限り、それはこの情報を示す唯一のGUIです。デバッガでアプリケーションを実行し、例外( - [NSException raise])を実行して、どのオブジェクトがこのエラーを出すかを少なくとも追跡できるかどうかを調べることができます。

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

誰かがこれよりも良い答えを得たいと思っていますが、私が知る限り、IBの接続の問題を確認してピンポイントするツールはありません。

0

バインディングをinterfacebuilderで実行する代わりにプログラムで実行するとどうなりますか?あなたがNSObjectのこのメソッドを使用する必要があります。これを行うために

:私は最初は気付かなかった

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

0

ことの一つは、あなたがオブジェクトの接続インスペクタを見れば、それが表示されていることでしたそれがバインドされているすべての素晴らしいリストです。アイテムの上にマウスを置くと、対応する要素が強調表示されます。

テーブル列に何かをバインドしてしまったときには便利です。

11

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

http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CocoaBindings/Concepts/Troubleshooting.html

キー持ち帰り?デバッグ情報を取得するために使用できるNSBindingDebugLogLevelという設定があります。それを設定する

二つの方法:

1 - 永久にデフォルトで

デフォルトはcom.yourdomain.yourapplication NSBindingDebugLogLevel 1

2を書く - ときのパラメータとして渡しますデバッグ

パス/ to/your/app -NSBindingDebugLogLevel 1

関連する問題