iPhone-从SuperView移除时解除锁定子视图UIViewController

iPhone-从SuperView移除时解除锁定子视图UIViewController,iphone,memory,memory-management,uiviewcontroller,dealloc,Iphone,Memory,Memory Management,Uiviewcontroller,Dealloc,我的主UIViewController(主菜单)上有几个按钮,可以在主菜单顶部创建并添加子视图UIViewController。当我移除子视图时,该控制器的内存不会被释放。如何立即释放该子视图内存 有人举个例子吗?这会解决我所有的问题!提前谢谢 下面是如何添加子视图 if((UIButton *) sender == gameClassicBtn) { GameClassic *gameClassicController = [[GameClassic alloc]

我的主UIViewController(主菜单)上有几个按钮,可以在主菜单顶部创建并添加子视图UIViewController。当我移除子视图时,该控制器的内存不会被释放。如何立即释放该子视图内存

有人举个例子吗?这会解决我所有的问题!提前谢谢

下面是如何添加子视图

if((UIButton *) sender == gameClassicBtn) {
        GameClassic *gameClassicController = [[GameClassic alloc] 
                             initWithNibName:@"GameClassic" bundle:nil]; 
        self.gameClassic = gameClassicController;
        [gameClassicController release]; 
        [self.view insertSubview:gameClassicController.view atIndex:1];
    }

根据您提供的代码,UIViewController可能至少保留两个位置—一个由视图继承人(self.view)保留,另一个由成员变量(self.gameClassic)保留。听起来您只是在释放视图继承人引用,而不是成员变量。如果您释放了后者,它会释放UIViewController吗?

我从不释放主菜单代码中的任何内容……这就是上面的代码所在。我不知道如何告诉那个文件我已经从视图中删除了gameClassic.h。我通过[self.view removeFromSubview]删除该子视图;为了回到主菜单,基本上我的问题是通过单击主菜单上的按钮来调用插入子视图。短游戏结束后,我执行removeFromSubview,该子视图中的内存不会立即释放。因此,如果他们在主菜单上选择不同的按钮,它将加载另一个子视图,objectalloc将继续构建。我将临时(强调临时)覆盖GameClassic类中的retain和release,并在每个子视图中放置一个断点。通过这种方式,您可以查看实例何时被保留和释放,从而找出需要删除额外引用计数的位置。我的所有IBOutlets都将在我的gameClass.m文件中的my-(void)dealloc中释放。我知道我也不应该打电话给[自我释放]。建议构建一个-(void)releasedView函数,在从子视图移除之前,我可以调用该函数来释放gameClassic中的所有内容?我的建议是覆盖retain和release,找出备用retain的来源,然后在适当的位置释放它。这是在不添加不必要代码的情况下解决问题的最佳方法。