Служебное приложение для iPhone - PullRequest
1 голос
/ 04 февраля 2010

Это раздражает меня в моем служебном приложении: у меня есть синглтон, объявленный так, как указано здесь: 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

Есть идеи?

Ответы [ 2 ]

1 голос
/ 04 февраля 2010

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

0 голосов
/ 05 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...