UITableViewControllerの私のコード:
delegate.myData = [myData objectAtIndex:indexPath.row];
デバッガーでdelegate.myData
またはindexPath.row
の値を確認するにはどうすればよいですか? delegate.myData
は配列で、indexPath.row
はint
でなければなりません。オブジェクトdelegate
およびindexPath
のメモリアドレスのみが表示されますが、myData
およびrow
はどこにありますか?
これを確認してください XcodeデバッガーでNSDictionary変数の内容を表示する方法?
私も使用します
po variableName
print variableName
コンソールで。
あなたの場合、実行することが可能です
print [myData objectAtIndex:indexPath.row]
または
po [myData objectAtIndex:indexPath.row]
開発環境としてのXcodeには変数をデバッグする簡単な方法を含めるべきだという他のポスターに同意します。さて、朗報、ISがあります!
Xcodeで変数をデバッグする方法に関する簡単な回答/チュートリアルを検索していないのを見つけた後、Xcode自体を調べてみましたが、これは(少なくとも私にとって)非常に有用な発見でした。
Xcodeのメイン画面で、スクリーンショットに表示されている右上隅のボタンをクリックして、下部のデバッグ領域を確認してください。
次に、ブレークポイント(コード領域の境界線をクリックして、プログラムを一時停止するコード内の行)を設定します。
デバッグ領域でこのボタンを探し、中央のボタンをクリックします。お住まいの地域が2つに分割されていることがわかります。
アプリケーションを実行します。
プログラムの実行中に最初のブレークポイントに到達すると、そのブレークポイントで使用可能なすべての変数が左側に表示されます。
詳細については、変数の左矢印を展開できます。さらに、検索フィールドを使用して、必要な変数を分離し、ブレークポイントのスコープに「ステップイン」するときにリアルタイムで変数が変化することを確認します。
デバッグ領域の右側で、目的の変数をマウスの右ボタンでクリックして、必要に応じて変数を印刷するために送信できます。
ご覧のとおり、そのコンテキストメニューには非常に興味深いデバッグオプションがたくさんあります。 Watchなど、入力されたコマンドで既に提案されているもの、あるいはEdit Value…変数のランタイム値を変更します!
また、次のことができます。
私見は少し隠されて面倒...
あなたの混乱は、宣言されたプロパティが(必然的に同じ名前の)(インスタンス)変数ではないという事実から生じます。
表現
indexPath.row
と同等です
[indexPath row]
そして割り当て
delegate.myData = [myData objectAtIndex:indexPath.row];
と同等です
[delegate setMyData:[myData objectAtIndex:[indexPath row]]];
合成プロパティの標準的な命名を想定しています。
さらに、delegate
はおそらくid<SomeProtocol>
型であると宣言されます。つまり、コンパイラはその時点でdelegate
の実際の型情報を提供できず、デバッガーは依存していますコンパイル時に提供される情報。 id
はジェネリック型であるため、delegate
のインスタンス変数に関するコンパイル時の情報はありません。
これらが、変数としてmyData
またはrow
が表示されない理由です。
-row
または-myData
の送信結果を検査する場合は、コマンドp
またはpo
を使用できます。
p (NSInteger)[indexPath row]
po [delegate myData]
または、式ウィンドウを使用します(たとえば、delegate
が実際のタイプMyClass *
であることがわかっている場合は、式(MyClass *)delegate
を追加するか、delegate
を右クリックして、 View Value as…
およびdelegate
の実際のタイプを入力します(例:MyClass *
)。
そうは言っても、デバッガはもっと役立つ可能性があることに同意します。
デバッガーウィンドウに、コンパイル時情報の代わりにランタイム型情報を使用するように指示するオプションがあります。確かにデバッガーの速度は低下しますが、有用な情報が提供されます。
宣言されたプロパティは、プロパティと呼ばれるグループに表示され、デバッガウィンドウで(オプションの)検査を直接許可できます。また、情報を取得するためにメッセージを送信/メソッドを実行する必要があるため、デバッガーの速度が低下しますが、有用な情報も提供されます。
実行時にコンソールウィンドウに値を印刷できます。手順は次のとおりです。
実行->表示->式を試してください
配列の名前または探しているものを入力します。
これは少し複雑になります。これらのオブジェクトはカスタムクラスまたは構造体であり、Xcodeでは他の開発環境ほど簡単ではありません。
もし私があなただったら、私はあなたが見たい値をNSLogにいくらかの説明を付けて送ります。
すなわち:
NSLog(@"Description of object & time: %i", indexPath.row);