再次调用addsubview导致减速

时间:2010-05-08 06:59:11

标签: iphone performance subview viewcontroller

我正在为iphone写一个小小的音乐游戏。我差点儿完成了,这是唯一让我无法解决问题的问题。任何帮助解决这个问题都非常感谢。

这就是我所做的: 在我的appDelegate我将菜单视图屏幕添加到窗口。菜单视图屏幕充当容器并控制将哪个视图呈现给用户。

意思是,在菜单视图屏幕上我有4个按钮(新游戏,选项,常见问题,高分)。 当用户点击某个按钮时会发生这种情况:

 if (self.gameViewController == nil)
 {
  GameViewController *viewController = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil];
  self.gameViewController = viewController;
  [viewController release];
 }
 [self.view addSubview:self.gameViewController.view];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleSwitchViewNotificationFromGameView:) name:@"SwitchView" object:gameViewController];

当用户返回菜单时,会执行以下代码:

 [[NSNotificationCenter defaultCenter] removeObserver:self];
 [self.gameViewController viewWillDisappear:YES];
 [self.gameViewController.view removeFromSuperview];

这适用于所有屏幕,但不适用于游戏屏幕(这是唯一一个有大量用户交互的屏幕) 意味着iPhone的响应能力(播放音调时)变得非常慢。 当我第一次显示游戏视图时,性能很好。一旦我再次将它添加到menu-views-container-subviews(addsubview),它就开始变慢(基本上打开一个新游戏) 是什么原因导致(或绕过)这个?

谢谢堆

祝你好运 汤姆

1 个答案:

答案 0 :(得分:0)

好的,在我的脑海中,这听起来不像控制器问题。这听起来像一个问题,其他东西正在运行或咀嚼内存。我建议使用分析工具来查看是否可以指出CPU正在消失的位置。例如,你可能会有很多东西的内存泄漏。