UINavigationController - кнопка назад вызывает повреждение данных - PullRequest
0 голосов
/ 18 июня 2011

Мое приложение, в котором используется контроллер UINavigation, заканчивается отображением числовых данных для пользователя.

Проблема в том, что вычисления будут правильными, только если пользователь перейдет непосредственно к экрану расчета, не нажимая кнопку "Назад". Если в любой момент нажать кнопку «Назад», даже после выполнения вычислений некоторые значения будут повреждены.

Например, первый запуск с правильными значениями:

2011-06-17 23:52:16.644 BlahBlah [19690:207] A = 146.000000 and B = 6.000000

И результат, если в любой момент во время программы была нажата кнопка «Назад»:

2011-06-17 23:54:05.888 BlahBlah [19690:207] A = 146.000000 and B = 4.012038

Значения останутся поврежденными даже при последующих перерасчетах и ​​исчезнут, только если программа будет полностью перезапущена (т. Е. Мне придется нажать «build» и запустить снова в Xcode).

Я обычно пишу на языках сценариев, и поэтому я предположил, что это проблема управления памятью, из-за отсутствия у меня опыта работы с Obj C. Однако я изучил код, гарантируя, что каждый alloc / new имеет выпуск и т. д. Я запустил отладчик, которому нечего рассказать об этой части кода. Я полностью застрял в этой точке.

Мой вопрос - что я делаю не так и как я могу исправить эту проблему?

Любая помощь приветствуется.

Дополнительная информация - так я передаю переменные. myProfile является экземпляром объекта с атрибутами A и B, которые являются двойными.

CalculateView *CalculateView = [[CalculateView alloc] initWithNibName:@"Calculate"  bundle:nil]; 
CalculateView.myProfile = myProfile;     
[self.navigationController pushViewController:CalculateView animated:YES];  

Я должен также упомянуть, что значения для A и B загружаются из списка.

1 Ответ

0 голосов
/ 18 июня 2011

Так и должно быть

CalculateView *CalculateView = [[CalculateView alloc] initWithNibName:@"Calculate"  bundle:nil]; 
CalculateView.myProfile = myProfile;     
//wrong code -- Where is Create1?
[self.navigationController pushViewController:Create1 animated:YES]; 
//right code
[self.navigationController pushViewController:CalculateView animated:YES]; 
...