13

アクション「ログメッセージ」でブレークポイントを使用しており、NSIndexPathの行を出力したいと思います。だから私は試しました:cell row @indexPath.row@しかし何も印刷されません。デバッガコマンドも使用してみましたexpr (void)NSLog(@"indexPath row:%i", indexPath.row)が、エラーが発生します:error: property 'row' not found on object of type 'NSIndexPath *'

私は何が間違っているのですか?

4

3 に答える 3

27

ドット構文は、コンパイラーによって追加された単なる構文糖衣です。私はこれをObjective-Cに追加することにいつも同意していませんが、一部の人々はそれを気に入っています。これらのドットはコンパイラによってメソッド呼び出しに変換されるため、デバッガのように直接メッセージを送信する場合は、実際のメソッド呼び出しを使用する必要があることを覚えておく必要があります。式を書き直してみてください。

expr (void)NSLog(@"indexPath row: %ld", (long int)[indexPath row])

デバッガーの基本的なlogメソッドがこのようなメソッド呼び出しを実行するかどうかはわかりません。そのため、式タイプを使用する必要がある場合があります。

于 2012-07-08T20:01:16.973 に答える
21

これは特別な場合だと思います。以下のコードは機能しますが、がrow何らかの値に初期化されている場合に限ります。

(lldb) print (NSInteger)[indexPath row]

これは、rowプロパティがUIKitのNSIndexPathの拡張であり、そのクラスのカテゴリとして実装されているという事実に関連している可能性があると思います。

于 2012-11-23T12:00:14.750 に答える
2

Xcodes変数ビューでこの要約形式を設定してみてください。

section:{(int)[$VAR section]},row:{(int)[$VAR row]}
于 2013-09-03T13:08:01.290 に答える