Ios 两个完全相同的代码,但其中一个代码有僵尸问题

Ios 两个完全相同的代码,但其中一个代码有僵尸问题,ios,memory,memory-management,memory-leaks,nszombie,Ios,Memory,Memory Management,Memory Leaks,Nszombie,在rootviewcontroller中,此代码运行良好 - (IBAction)gotoAboutGame:(id)sender { aboutGame *aboutGameObj = [[aboutGame alloc]init]; [UIView transitionFromView:self.view toView:aboutGameObj.view duration:2 options:UIViewAnimationOptionTransitionCurlUp com

在rootviewcontroller中,此代码运行良好

- (IBAction)gotoAboutGame:(id)sender
{
    aboutGame *aboutGameObj = [[aboutGame alloc]init];

    [UIView transitionFromView:self.view toView:aboutGameObj.view duration:2 options:UIViewAnimationOptionTransitionCurlUp completion:^(BOOL finished) {
        [aboutGameObj release];
    }];

    [self release];
}
但是当我回到rootviewcontroller时,我收到了僵尸攻击

- (IBAction)gotoMain:(id)sender
{
ViewController *viewControllerObj = [[ViewController alloc]init];

    [UIView transitionFromView:self.view toView:viewControllerObj.view duration:2 options:UIViewAnimationOptionTransitionCurlUp completion:^(BOOL finished) {
        [viewControllerObj release];
    }];

    [self release];
}

它显示了rootviewcontroller视图,但当我点击任何按钮时,僵尸攻击就消失了。

这段代码属于哪一类

我觉得这条线很可疑

[self release];

为什么物体会释放自己?当然,创建它的对象应该这样做。

这段代码在哪个类中

[viewControllerObj release];
我觉得这条线很可疑

[self release];
为什么物体会释放自己?当然,创建它的对象应该这样做

[viewControllerObj release];
把它放在动画块后面

将其放在动画块之后

  • 按照惯例,类名以大写字母开头,而不是小写字母

  • 你的内存管理是非常错误的<代码>[self release]几乎从来都是不正确的(有一些非常深奥的情况)。什么是保持平衡

      • 按照惯例,类名以大写字母开头,而不是小写字母

      • 你的内存管理是非常错误的<代码>[self release]几乎从来都是不正确的(有一些非常深奥的情况)。什么是保持平衡


      切换到另一个视图后,self是当前类的对象。我正在释放当前类,因此通过这种方式释放当前类的viewcontroller以防止内存泄漏。我了解self是什么,但我很少看到这样做。必须有一个对象拥有这两个控制器吗?例如,通常我希望创建viewController的对象负责释放它。gotoAboutGame方法在rootviewcontroller中声明,gotoMain方法在aboutgame.m中声明,我正在创建方法开头的对象。。。。。我有一个非常小的测验项目,我可以把它发送给你,这样你就可以检查我在做什么蠢事我是新来的,有这么多问题。self是当前类的对象在切换到另一个视图后,我正在释放当前类,这样当前类的viewcontroller将被释放,以防止内存泄漏我了解self是什么,但我很少看到这样做。必须有一个对象拥有这两个控制器吗?例如,通常我希望创建viewController的对象负责释放它。gotoAboutGame方法在rootviewcontroller中声明,gotoMain方法在aboutgame.m中声明,我正在创建方法开头的对象。。。。。我有一个非常小的测验项目,我可以把它发送给你,这样你就可以检查我在做什么蠢事我是新来的,有这么多问题。我也做了,但应用程序崩溃了。。。。如果我把这个放在动画块之后,这段代码将显示下一个视图,但是viewcontroller将被释放,所以当我触摸任何按钮时,应用程序会显示。。。请再告诉我一件事,这段代码使下一个视图成为rootviewcontroller??在ios中交换视图的最佳方式是什么?这是我一个月来一直在追求的目标,但没有找到在没有导航或tabbarcontrolleri的情况下在ios视图之间交换的最佳方式我也这样做了,但应用程序崩溃了。。。。如果我把这个放在动画块之后,这段代码将显示下一个视图,但是viewcontroller将被释放,所以当我触摸任何按钮时,应用程序会显示。。。请再告诉我一件事,这段代码使下一个视图成为rootviewcontroller??在ios中交换视图的最佳方式是什么?这是我一个月来一直在追求的目标,但没有找到在没有nav或tabbarcontroller的情况下在ios视图之间交换的最佳方法+1表示“僵尸攻击”+1表示“僵尸攻击”。那么交换视图时如何管理内存。。应用程序启动首先是rootviewcontroller,我切换到AboutName,然后AboutName变成了rootviewcontroller,所以我通过释放它清理了以前的viewcontroller,请参见UIViewController类文档顶部链接的与UIViewController相关的示例。更好的是,打开ARC(自动引用计数),不用担心。那么在交换视图时如何管理内存。。应用程序启动首先是rootviewcontroller,我切换到AboutName,然后AboutName变成了rootviewcontroller,所以我通过释放它清理了以前的viewcontroller,请参见UIViewController类文档顶部链接的与UIViewController相关的示例。更好的是,打开ARC(自动参考计数),不用担心。