以下の赤で下線が引かれている違いに戸惑っています。
このまったく同じ NSDate オブジェクトがデバッグ ペインの BST に表示されるのに、LLDB ターミナルの GMT に「「日付」の説明を出力する」ように求められるのはなぜですか?
これはXcode 4.6.1にあります
AnNSDate
は、人間がその瞬間を何と呼ぶかを考慮せずに、特定の瞬間を表します。を見ると、 、、またはプロパティNSDate
さえないことに気付くでしょう。プロパティは言うまでもありません。タイム ゾーンは、表示用に解釈するために使用されるの機能です。( の方がよく知られているかもしれません。日付を解釈するために内部的に使用されます。)hour
minute
second
timeZone
NSCalendar
NSDate
NSDateFormatter
NSCalendar
この場合、Xcode が変数パネルのカレンダーを設定するのは、LLDB がデバッグ コンソールのカレンダーを設定する方法とは少し異なります。-description
変数パネルは現在のタイム ゾーンを尊重する日付フォーマッタを使用しているのに対し、デバッグ コンソールは常に UTC を使用する を呼び出していると推測する必要があります。(お使いの Mac は BST を使用するように構成されていますよね? そうでない場合、それは奇妙な選択です...)
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
.