UINavigationController - 后退按钮导致数据损坏

时间:2011-06-18 14:15:46

标签: objective-c cocoa-touch memory-management uinavigationcontroller corruption

我的应用程序采用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

即使在后续的重新计算中,这些值仍将被破坏,并且只有在程序完全重新启动时才会消失(即,我必须在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的值是从plist加载的。

1 个答案:

答案 0 :(得分:0)

应该是这样的

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];