我的应用程序采用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加载的。
答案 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];