Одноэлементная проблема приложения Iphone Utility

Это раздражает меня в моем служебном приложении: у меня есть синглтон, объявленный способом, указанным здесь: http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

Мой синглтон имеет 4 объявленных свойства: 3 числа с плавающей запятой и целое число. Теперь в моем контроллере представления я устанавливаю такие свойства в методе 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, а значения с плавающей запятой — элементу UISliders. Итак, проблема в том, что всякий раз, когда я запускаю свое приложение, числа с плавающей запятой сохраняются в синглтоне до тех пор, пока я не установлю int - если я устанавливаю числа с плавающей запятой, а затем устанавливаю int, числа с плавающей запятой всегда сбрасываются до 0 при каждом вызове viewDidLoad. Итак, последовательность такая:

1)запустите приложение
2)переверните вид и установите поплавки(r, g, b)
3)переверните вид обратно на главную
4)переверните вид обратно на Flipside и поплавки установить прежние значения. Теперь установите int.
5) вернитесь к Main
6) переверните вид обратно на Flipside, а int будет установлен на предыдущее значение, но поплавки установлены на 0

Любые идеи?


person lmprods    schedule 03.02.2010    source источник
comment
Когда вызывается метод update singleton? а можно подробнее о методе?   -  person Deepak Danduprolu    schedule 04.02.2010
comment
Показать больше кода. Проблема скорее всего в создании синглтона.   -  person Stefan Arentz    schedule 04.02.2010


Ответы (2)


Самое простое объяснение состоит в том, что на самом деле вы не получаете синглтон. Попробуйте регистрировать объект, возвращаемый [Singleton sharedSingleton], каждый раз, прежде чем использовать его, и посмотрите, всегда ли адрес один и тот же.

person TechZen    schedule 04.02.2010
comment
Это тоже мое предположение. Довольно легко вызвать подобную ошибку, просто забыв ключевое слово static в нужном месте. - person bbum; 04.02.2010

После некоторого тестирования я считаю, что проблема возникла из-за того, что UISegmentedControl selectedSegmentIndex сбрасывается до выбора, определенного IB, каждый раз, когда загружается контроллер представления.

person lmprods    schedule 04.02.2010