私はいくつかの助けを使うことができます。イライラする数日間の試行錯誤の後、NSUserDefaults への設定の書き込みで一貫性のない結果が得られます。
連続するコード行は次のとおりです。
NSLog(@"startTimer(): End Time defaults: %f\n", [defaults floatForKey:kEndTimeKey]);
NSLog(@"startTimer(): new End Time: %f\n", endTime);
[defaults setFloat:endTime forKey:kEndTimeKey];
[defaults synchronize];
NSLog(@"startTimer(): stored EndTimeKey: %f\n", [defaults floatForKey:kEndTimeKey]);
kEndTimeKey は定数文字列です。
ご覧のとおり、キーの現在の値をログに記録してから、保存する予定の値をログに記録し、同期してから、保存された値を再度読み取ります。私には簡単に思えますが、デバッガーの出力は次のとおりです。
2009-07-22 22:05:43.263 TimerTest3[1584:207] startTimer(): End Time defaults: 0.000000
2009-07-22 22:05:43.266 TimerTest3[1584:207] startTimer(): new End Time: 270018630.916571
2009-07-22 22:05:43.287 TimerTest3[1584:207] startTimer(): stored EndTimeKey: 270018624.000000
元の値 0、571 で終わる意図した値、および 6 秒ずれているキャッシュから読み取られた値が表示されます。
新しいデフォルトがどこから来たのかわかりません。何か案は?デバイスとシミュレーターで同様の動作が得られます。
ありがとうブラッド