当前位置:  开发笔记 > IOS > 正文

自动释放范围

如何解决《自动释放范围》经验,为你挑选了1个好方法。

我想知道自动删除是如何在iPhone上运行的.我知道,一旦你向对象发送自动释放,它就会被保留,直到autorelease被发送的块的范围结束.那是对的吗?

我在applicationDidFinishLaunching下面的NIB中初始化一个视图:

    (void)applicationDidFinishLaunching:(UIApplication *)application {

    loginViewController = [[[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil] autorelease];

    [window addSubview: [loginViewController view]];
    [window makeKeyAndVisible];
}

并且视图根本没有显示,屏幕上的所有内容都是 UIWindow

现在,一旦我autorelease从控制器初始化中删除了所有内容,从那里开始顺利进行.

这是关于什么的?

干杯,K.



1> Don McCaughe..:

当您调用时autorelease,您将对象的所有权授予当前自动释放池.运行循环在调度事件(例如applicationDidFinishLaunching:)之前创建一个新的自动释放池,并在事件结束时销毁该池.

当您将自己的所有权授予LoginViewController自动释放池时,它会在applicationDidFinishLaunching:返回后立即释放.当视图控制器释放自身时,它会从superview(在这种情况下是你的窗口)中删除它的视图.

您的应用程序委托应该保持的所有权LoginViewControllerrelease它的应用程序委托的dealloc方法(或当你与你的登录完成,并已转移到另一个视图).

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有