1

私は 3 日間で 2 番目の問題に遭遇しました。そこでは、誤ったバインディングが何時間もの検索と頭痛の種を引き起こしています。

スタック トレースを見ると、デバッグに問題があることがわかります (たとえば、ランタイムが例外の生成を開始する前に最後に呼び出されたメソッドの 1 つは bind:toObject:withKeyPath:options: でした)。ただし、どのバインディングが問題を引き起こしているかを判断することは不可能です。

  • スタック トレースまたは変数インスペクションには、クラッシュした呼び出しに関与したビューは示されません。

  • コードをステップ実行することで追跡できる最後の非マシン命令は、モノリシック関数 (awakeFromNib または makeKeyAndOrderFront) の呼び出しです。

  • 実際の例外のメッセージは不可解です。たとえば、「クラス NSScrollView のオブジェクトから NSArray を作成できません」など、NSScrollViews を持たないウィンドウ (2 つのボタンと 2 つのテキスト フィールドのみ) を作成しています。

それで...この種の問題をデバッグするためのヒントはありますか? 例えば:

  • nib/xib で指定されたすべてのバインディングのリストを取得する方法はありますか? (これができないと頭がおかしくなる!)

  • どのビューまたはコントロールがクラッシュに関与したかを調べる方法はありますか?

  • awakeFromNib のようなモノリシック呼び出しの内部で何が起こっているかについて、より多くの情報を取得する方法はありますか?

4

1 に答える 1

2

xib ファイルを (IB ではなく) ソース コードとして開き、"IBBindingConnection"セクションを検索できます。

例: ジャスティンの検索方法 (コメントを参照):

grep -A 18 -B 1 -H -a -n "IBBindingConnection" /PATH/TO/NIB
于 2012-08-19T00:15:47.730 に答える