0

每当我添加一个新的 viewController 时,我的 ObjectAlloc 都会跳得很高,而且永远不会回来。即使在调用 removeFromSuperview 之后。这是正常的吗?

if((UIButton *) sender == gameArcadeBtn) {
        GameArcade *gameArcadeController = [[GameArcade alloc] 
                              initWithNibName:@"GameArcade" bundle:nil]; 
        self.gameArcade = gameArcadeController; 
        [gameArcadeController release]; 
        [self.view insertSubview:gameArcadeController.view atIndex:1];
    }
4

2 回答 2

0

实例化一个视图总是会创建很多对象。只要这个视图在内存中或者没有被自动释放,对象就会一直分配在内存中。因此,要回答您的问题,这是正常的。

听起来您担心内存使用情况,虽然观察对象分配很重要,以免它变得重要,但更重要的是找到您的应用程序泄漏。

一些内存管理技巧:
1)做延迟加载。仅在用户要求时加载您的视图,而不是在应用程序开始时加载您的视图
2)当您不再需要时,删除您可能删除的所有内容。这意味着在 viewWillAppear 和 viewDidDisappear 中做大量工作
3) 了解 @properties 以及它与自动释放的关系,并且不要对所有内容都使用属性。
4) 尽管它很吸引人,但当您不再需要对象时,请避免自动释放和手动释放对象。

于 2009-09-17T05:27:58.743 回答
0

这可能是因为您仍然在类中保留视图的控制器。尝试释放它

于 2009-09-17T05:28:14.833 回答