アプリのロード時に使用するために格納するために、整数値を NSUserDefault オブジェクトに渡しています。その整数値を浮動小数点数に切り替えようとするまで、完全に機能していました。それはたくさんの問題を引き起こしたので、私は自分のアプローチを再調整し、command-z で整数の安全性に戻った...またはそう思った。
以前は、値を保存するとすぐにシミュレーターを閉じることができ、コンソールは正しく保存された数値を問題なく吐き出していました。今、そのばかげたフロートの混乱の後 (NSUserDefault オブジェクトを破損した可能性がありますか? それはばかげているように聞こえます...)、表示する正しい数値を取得することは、ややギャンブルです。
一連の NSLog を調べたところ、保存を押したときに保存した値が UserDefault クラスの set メソッドに正しく渡されていることが確認できました。set メソッドは値を正しく取得し、次のように NSUD オブジェクトに設定します。
[self setObject:[NSNumber numberWithInteger:num] forKey:savedNum];
そのオブジェクトに対して get メソッドを実行すると、コンソールに値が正しく出力されます。アプリが読み込まれると、先ほどテストした同じ get メソッドが呼び出されますが、常に正しい結果が返されるとは限りません。多くの場合、表示されるのは前回の保存の値です。
保存ボタンを押して 5 秒待ってからアプリを閉じると、以前は正常に機能していましたが、まれです。10 秒待つと、正しい数字が吐き出されます。
なぜこの操作に時間が関係するのでしょうか? 特に昨日正しく動作していたので、なぜこれが起こっているのか完全に途方に暮れています...
任意の考えや入力をいただければ幸いです!!