我的iPhone应用程序有一些内存问题,我不知道发生了什么。
因此,我观察到,当从一个UIViewController转到另一个时,应用程序的内存使用量不断上升。我使用了"Allocations“工具中的"Mark Heap”工具,它认为唯一未释放的对象是我的UIViewControllers。
更具体地说,我让我的两个UIViewControllers。第一个文件名为PuzzleViewController,第二个文件名为Options。当应用程序启动时,会出现PuzzleViewController。我在这里标记了一个堆,以设置基线,然后按下" Options“按钮,将显示Options UIViewController。我返回到第一个,并再次标记一个堆。在一次又一次地重复这些步骤(大约20次:D)之后,我观察到在每个Heapshot之后,我有大约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函数。
谢谢你,安德烈
发布于 2011-03-27 20:33:22
您应该调用dismissModalViewController,而不是再次调用presentModalViewController,也不应该重新创建PuzzleViewController。
发布于 2011-03-27 20:48:21
Dismissing a Modal View Controller
https://stackoverflow.com/questions/5449074
复制相似问题