gpt4 book ai didi

objective-c - window addSubview释放问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:14 25 4
gpt4 key购买 nike

我想知道关于我的应用程序的应用程序委托(delegate)的事情。为什么我不能这样发布:

-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
RootViewController *controller = [[RootViewController alloc]
initWithNibName:@"RootViewController"
bundle:[NSBundle mainBundle]];
[self.window addSubview:controller.view];
[controller release]; // Here's my question
[self.window makeKeyAndVisible];
return YES;
}

我几乎可以肯定 -addSubview 方法会使我的保留计数增加 1。那么为什么我在释放 Controller 时会崩溃?为什么它在另一个类而不是委托(delegate)中工作?

谢谢!

最佳答案

其他答案是正确的,没有保留 UIVIewController,我建议设置 UIWindows rootViewController (仅适用于 iOS 4.0 及更高版本)保留 Controller 的属性。如果您的应用支持 iOS 4.0 之前的版本,那么您需要将 Controller 存储在一个实例变量中。

-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
RootViewController *controller = [[RootViewController alloc]
initWithNibName:@"RootViewController"
bundle:[NSBundle mainBundle]];
//controller will be retained and view will set for you
window.rootViewController = controller;
[controller release];
[self.window makeKeyAndVisible];
return YES;
}

关于objective-c - window addSubview释放问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com