我想知道自动删除是如何在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.
当您调用时autorelease
,您将对象的所有权授予当前自动释放池.运行循环在调度事件(例如applicationDidFinishLaunching:
)之前创建一个新的自动释放池,并在事件结束时销毁该池.
当您将自己的所有权授予LoginViewController
自动释放池时,它会在applicationDidFinishLaunching:
返回后立即释放.当视图控制器释放自身时,它会从superview(在这种情况下是你的窗口)中删除它的视图.
您的应用程序委托应该保持的所有权LoginViewController
和release
它的应用程序委托的dealloc
方法(或当你与你的登录完成,并已转移到另一个视图).