【发布时间】:2010-02-12 06:37:15
【问题描述】:
有人发布了与此类似的问题,但没有解决方案,但也没有示例代码。所以,我想我会在这里详细发布我的问题。
我的游戏有多种玩法,每一种都有多种选择。在尝试了各种设计之后,将它们放入具有三个选项卡的 UITabBarController 中似乎是最干净的,每个选项卡对应一个游戏类别。我创建了一个新的 UIVIewController,它从主菜单屏幕加载(替换主屏幕)并初始化 UITabBarController,如下所示:
barController = [[UITabBarController alloc] init];
Games1 *vc1 = [[[Games1 alloc] initWithNibName:@"Games1" bundle:nil] autorelease];
Games2 *vc2 = [[[Games2 alloc] initWithNibName:@"Games2" bundle:nil] autorelease];
Games3 *vc3 = [[[Games3 alloc] initWithNibName:@"Games3" bundle:nil] autorelease];
NSArray* controllers = [NSArray arrayWithObjects:vc3, vc1, vc2, nil];
barController.viewControllers = controllers;
[self.view addSubview:barController.view];
当用户选择游戏时,我从窗口中移除 UIViewController 并按如下方式释放:
- (void)dealloc {
printf("Games released: barController: %d\n", [barController retainCount]);
[barController.view removeFromSuperview];
barController.viewControllers = 0;
[barController release];
barController = 0;
[super dealloc];
}
我遇到的问题是,当我旋转设备时,我遇到了崩溃。如果我直接从主屏幕启动游戏模式并旋转,则不会崩溃。我已经验证所有东西都被释放了,并且我在 bar 控制器上的保留计数是 1。关于如何消除这种崩溃的任何建议?谢谢!
[编辑]更多信息:
barController定义为:
IBOutlet UITabBarController *barController;
与:
@property (nonatomic, retain) IBOutlet UITabBarController *barController;
【问题讨论】: