0

我有一个在 iOS 5 中运行良好的应用程序,但是当我在 iOS 4 中尝试它时,我得到一个 EXC_BAD_ACCESS 错误。我在 AppDelegate 中添加了一个标签栏,如下所示:

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.backgroundColor = [UIColor whiteColor];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:NO];

UITabBarController *tabBarController=[[UITabBarController alloc] init];

searchTableViewController = [[SearchTableViewController alloc] initWithStyle:UITableViewStylePlain];
UINavigationController *navControllerSearch=[[UINavigationController alloc] initWithRootViewController:searchTableViewController];

firstviewcontroller = [[FirstViewController alloc] initWithStyle:UITableViewStyleGrouped] ;
UINavigationController *navFirstView=[[UINavigationController alloc] initWithRootViewController:firstviewcontroller];
[[FirstViewController tableView] setScrollEnabled:NO];

secondViewController = [[SecondViewController alloc] initWithStyle:UITableViewStyleGrouped];
UINavigationController *navsecondView=[[UINavigationController alloc] initWithRootViewController:secondViewController];
[[SecondViewController tableView] setScrollEnabled:NO];

[tabBarController setViewControllers:[NSArray arrayWithObjects:navFirstView, navSecondView, navControllerSearch, nil]];

[self.window setRootViewController:tabBarController];

当我尝试从第一个选项卡移动到第二个选项卡时,应用程序崩溃了。在 iOS 5 中它运行良好。iOS 部署目标属性是 iOS 4.0。

如果我运行 Instruments 并寻找 Zombies,我可以找到具有以下信息的 Zombie:

#   Address Category    Event Type  RefCt   Timestamp   Size    Responsible      Library    Responsible Caller
1   0x5a21880   CALayer Zombie  -1  00:10.816.545   0   QuartzCore  -[CALayerArray copyWithZone:]


0 CoreFoundation ___forwarding___
1 CoreFoundation _CF_forwarding_prep_0
2 CoreFoundation CFRetain
3 CoreFoundation +[__NSArrayI __new::]
4 QuartzCore -[CALayerArray copyWithZone:]
5 CoreFoundation -[NSObject(NSObject) copy]
6 UIKit -[UIView(Hierarchy)  _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
7 UIKit -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
8 UIKit -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
9 UIKit -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
10 UIKit -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
11 UIKit -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:]
12 UIKit -[UIView(Hierarchy) removeFromSuperview]
13 UIKit -[UITransitionView _didCompleteTransition:]
14 UIKit -[UITransitionView transition:fromView:toView:]
15 UIKit -[UITransitionView transition:toView:]
16 UIKit -[UITabBarController transitionFromViewController:toViewController:transition:shouldSetSelected:]
17 UIKit -[UITabBarController transitionFromViewController:toViewController:]
18 UIKit -[UITabBarController _setSelectedViewController:]
19 UIKit -[UITabBarController _tabBarItemClicked:]

有任何想法吗?

4

1 回答 1

0

您可能想检查第二个 ViewController 中的代码,也许有什么东西在加载时让您崩溃,看起来崩溃是在转换完成后发生的。尝试调试您的 viewWillApear 或 viewDidLoad。其他选项卡也会崩溃吗?

于 2012-07-25T03:10:34.930 回答