gpt4 book ai didi

iPhone - 加载新 View 和释放的对象

转载 作者:行者123 更新时间:2023-11-29 05:06:47 25 4
gpt4 key购买 nike

所以我现在感觉自己像个认真的菜鸟,但我有一个问题我似乎无法解决。我有一个准系统应用程序,除了登录屏幕和包含表格 View 的第二个 View 之外,实际上什么都没有。当我在登录后添加第二个 View 时(我之前已经这样做了 4 次...), TableView 会遍历其委托(delegate)并显示它将要加载,但发生了一些事情。我已经启用了我的 NSZombies,它似乎在新 View 出现之前取消分配它。

在跟踪它并重新一点一点地构建之后,它似乎是在我将表作为 IB 中的数据源/委托(delegate)连接到 View 后发生的。我已将 View 设置为 UITableViewDelegate,并且这些方法确实被触发。有谁知道可能导致这种行为的原因是什么?

最佳答案

您是否使用 addSubview: 将“第二个” View 添加到现有 View 中,或者将其添加到某种形式的 UINavigationController 或 UITabBarController 中?当您执行此操作时,它将自动增加保留计数,并且释放 View 的任何代码都不会导致被释放。

在我的 AppDelegate 应用程序中:didFinishLaunchingWithOptions 我有类似的内容;

LoginViewController *login = [[LoginViewController alloc] init];    
[login setDelegate:self];

loginNavController = [[UINavigationController alloc]
initWithRootViewController:login];

[window addSubview:[loginNavController view]];

然后,一旦登录发生(并成功使用协议(protocol)/委托(delegate)将消息发送回 AppDelegate),我将调用此代码;

UIViewController *newView1 = [[UIViewController alloc] init];
UIViewController *newView2 = [[UIViewController alloc] init];
UIViewController *newView3 = [[UIViewController alloc] init];

myTabBarController = [[UITabBarController alloc] init];

myNavController = [[UINavigationController alloc]
initWithRootViewController:newView1];

// nav controller now retaining
[newView1 release];

NSArray *viewControllers = [NSArray arrayWithObjects:myNavController,
newView2,
newView3,
nil];

[myTabBarController setViewControllers:viewControllers animated:YES];
[[myTabBarController view] setFrame:[[UIScreen mainScreen] applicationFrame]];

[window addSubview:[tabBarController view]];

// tab bar controller now retaining
[newView2 release];
[newView3 release];

// remove login from application
[[loginNavController view] removeFromSuperview];

AppDelegate 在头文件中声明了以下内容;

LoginViewController *loginViewController;
UITabBarController *myTabBarController;
UINavigationController *myNavController;

在 AppDelegate 的 dealloc 方法中,这些被释放。

这给了我我的登录页面,然后当它处理我的 View 时,顶部导航全部使用底部标签栏控制。

希望这能在某种程度上有所帮助。

关于iPhone - 加载新 View 和释放的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4752295/

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