UIViewController类内存问题 - presentModalViewController

时间:2011-03-27 12:01:57

标签: iphone objective-c memory-management uiviewcontroller dealloc

我的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函数。

谢谢你, 安德烈

2 个答案:

答案 0 :(得分:2)

您应该再次致电dismissModalViewController,而不是presentModalViewController,也不要重新设置PuzzleViewController

答案 1 :(得分:0)