Это раздражает меня в моем служебном приложении: у меня есть синглтон, объявленный так, как указано здесь: http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
Мой синглтон имеет 4 объявленных свойства: 3 числа с плавающей запятой и int. Теперь в моем контроллере представления я установил свойства, подобные этим, в методе updateSingleton:
[[Singleton sharedSingleton] setMyInt: var1];
[[Singleton sharedSingleton] setMyFloat1: var2];
[[Singleton sharedSingleton] setMyFloat2: var3];
[[Singleton sharedSingleton] setMyFloat3: var4];
В моем методе viewDidLoad я получаю такие свойства:
int m = [[Singleton sharedSingleton] myInt];
float r = [[Singleton sharedSingleton] myFloat1];
float g = [[Singleton sharedSingleton] myFloat2];
float b = [[Singleton sharedSingleton] myFloat3];
Затем я присваиваю значение int для UISegmentedControl, а значения типа float для UISliders. Таким образом, проблема в том, что всякий раз, когда я запускаю свое приложение, числа с плавающей точкой сохраняются в синглтоне до тех пор, пока я не установлю int - если я устанавливаю значения float, а затем устанавливаю int, значения float всегда сбрасываются в 0 при каждом вызове viewDidLoad. Итак, последовательность:
1) запустить приложение
2) перевернуть вид и установить поплавки (r, g, b)
3) перевернуть вид назад на главную
4) Переверните вид назад на Flipside и поплавки будут установлены на предыдущие значения. Теперь установите int.
5) перевернуть обратно на главную
6) Переверните вид назад на Flipside, и для int будет установлено предыдущее значение, а для числа с плавающей запятой установлено значение 0
Есть идеи?