Я передаю целочисленное значение в объект NSUserDefault, чтобы сохранить его для использования при загрузке моего приложения. I HAD это работало отлично, пока я не попытался переключить это целочисленное значение в число с плавающей точкой. Это вызвало целую кучу проблем, поэтому я изменил свой подход, и команда-z вернулась к безопасности целых чисел ... или так я думал.
Раньше было так, что если я сохранял значение, я мог немедленно закрыть свой симулятор, и консоль без проблем выплюнула бы правильно сохраненный номер. ТЕПЕРЬ, после этого глупого беспорядка с плавающей точкой (Мог ли я повредить мой объект NSUserDefault? Это просто звучит глупо ...), получение нужного числа для отображения - это нечто вроде игры.
Я прошел с кучей NSLogs и могу подтвердить, что значение, которое я сохраняю, когда нажимаю сохранить, правильно передается методу set в классе UserDefault. Метод set получает значение правильно, а затем устанавливает его для объекта NSUD следующим образом:
[self setObject:[NSNumber numberWithInteger:num] forKey:savedNum];
Когда я запускаю метод get для этого объекта, консоль правильно выводит значение. Когда приложение загружается, оно вызывает тот же самый метод get, который я только что протестировал, но он не всегда возвращает правильную вещь. Часто, это значение предыдущего сохранения, которое отображается.
Если я нажму кнопку «Сохранить» и подожду 5 секунд, прежде чем закрыть приложение, оно раньше работало правильно, но редко. Если я подожду 10 секунд, он выплевывает правильный номер.
Почему время имеет какое-либо отношение к этой операции? Я просто в полной растерянности относительно того, почему это происходит, особенно потому, что у меня это работало правильно только вчера ...
Буду признателен за любые мысли или пожелания !!