1

以下の赤で下線が引かれている違いに戸惑っています。

ここに画像の説明を入力

このまったく同じ NSDate オブジェクトがデバッグ ペインの BST に表示されるのに、LLDB ターミナルの GMT に「「日付」の説明を出力する」ように求められるのはなぜですか?

これはXcode 4.6.1にあります

4

2 に答える 2

4

AnNSDateは、人間がその瞬間を何と呼ぶか​​を考慮せずに、特定の瞬間を表します。を見ると、 、、またはプロパティNSDateさえないことに気付くでしょう。プロパティは言うまでもありません。タイム ゾーンは、表示用に解釈するために使用されるの機能です。( の方がよく知られているかもしれません。日付を解釈するために内部的に使用されます。)hourminutesecondtimeZoneNSCalendarNSDateNSDateFormatterNSCalendar

この場合、Xcode が変数パネルのカレンダーを設定するのは、LLDB がデバッグ コンソールのカレンダーを設定する方法とは少し異なります。-description変数パネルは現在のタイム ゾーンを尊重する日付フォーマッタを使用しているのに対し、デバッグ コンソールは常に UTC を使用する を呼び出していると推測する必要があります。(お使いの Mac は BST を使用するように構成されていますよね? そうでない場合、それは奇妙な選択です...)

于 2013-03-23T01:40:21.880 に答える
3

Brent's reply is fine - but I wanted to address one detail specifically. lldb has built in type formatters for many common types including NSDate. If you did p date in the debugger console, you would get the same output as you see in the Locals window. When you right-click/control-clicked on the variable and did 'Print description', it is equivalent to writing po date in the console -- as Brent says, it calls the -description method.

This isn't a console vrs. Locals window difference, or an Xcode vrs. lldb difference. One access method is using lldb's built in data formatters and one is calling -description.

于 2013-03-23T04:06:45.273 に答える