我的iPhone应用程序存在内存问题,我不知道发生了什么。
所以,我观察到当从UIViewController转到另一个时,应用程序的内存使用量不断上升。我使用了“Allocations”工具中的“Mark Heap”工具,并且它找到了唯一没有解除分配的对象是我的UIViewControllers。
更具体地说,我让我的两个UIViewControllers。第一个名为PuzzleViewController,第二个名为Options。当应用程序启动时,会出现PuzzleViewController。我在这里标记一个堆,设置一个基线,然后按下“Options”按钮,它将显示Options UIViewController。我回到第一个,我再次标记一堆。经过一遍又一遍地重复这些步骤(比如20次左右:D)我观察到每次快照后我有大约22个物体还活着。其中两个对象是我的UIViewControllers的实例。
我真的不知道发生了什么。
以下是我切换到Options UIViewController的方法:
- (IBAction) onOptionsButton: (id) sender
{
Options *viewController = [[Options alloc] init];
[self presentModalViewController:viewController animated:YES];
[viewController release];
}
以下是我如何回到PuzzleViewController:
- (IBAction) onMainMenu:(id) sender
{
PuzzleViewController *modalView = [[PuzzleViewController alloc] init];
[self presentModalViewController:modalView animated:YES];
[modalView release];
}
我的viewDidUnload函数被正确调用,但是没有调用dealloc函数。
谢谢你, 安德烈
答案 0 :(得分:2)
您应该再次致电dismissModalViewController
,而不是presentModalViewController
,也不要重新设置PuzzleViewController
。
答案 1 :(得分:0)