我遇到了这个问题,我的应用程序EXC_BAD_ACCESS
出错并卡住/停止。我正在使用模拟器的“向左旋转”和“向右旋转”选项来模拟方向变化行为。此错误的可能原因是什么?由于我没有得到有关错误的详细信息,因此无法追踪它。
我所有的控制器类都有:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait); // Return YES for supported orientations
}
任何想法,指针?谢谢。
但是我的代码没有调用 [UIDevice setOrientation:] 方法。
这是我在调试窗口中得到的跟踪:
objc_msgSend
-[UIWindow _handleDeviceOrientationChange:]
_nsnote_callback
__CFXNotificationPost
_CFXNotificationPostNotification
-[NSNotificationCenter postNotificationName:object:userInfo:]
-[UIDevice setOrientation:]
-[UIApplication handleEvent:withNewEvent:]
_[UIApplication sendEvent:]
_UIApplicationHandleEvent
SendEvent
PurpleEventTimerCallBack
CFRunLoopRunSpecific
CFRunLookRunInMode
GSEventRunModel
GSEventRun
-[UIApplication _run]
UIApplicationMain
main
请注意,当我的视图包含标签栏时会出现错误。由于没有人回复,我想这不是一个常见问题,我找不到任何资源来解决这个问题。
我可以以某种方式告诉我的应用程序以单一方向(纵向)运行,并且不要发送事件以改变方向吗?这可能会解决我的问题,但这是我正在寻找的替代方案。
谢谢保罗,您的评论很有帮助,我能够解决问题,但需要为我不需要的视图保留内存。这是发生了什么:
我有一个视图(视图 A),它打开另一个视图(视图 B)。App Delegate 方法负责打开视图 A 和视图 B。应用程序不会在视图 A 上崩溃。我从窗口中删除视图 A,并释放它的控制器对象,并将视图 B 添加到窗口。我相信这是我做错了什么。你能帮我写代码吗?
下面是释放视图 A 和打开视图 B 的代码:
- (void)openViewB {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:YES];
// Remove viewControllerA from the window's view
[window removeFromSuperview];
// !-- Commenting out this block fixes the issue --!
// Release memory wired for viewControllerA view
if(viewControllerA) {
[viewControllerA release];
viewControllerA = nil;
}
// We call window:addSubView to add the viewB to the main window.
// You can use this call to add other views as child views not only to windows
// but to other views as well. (UIWindow is a subclass of UIView).
[window addSubview:viewControllerB.view];
[UIView commitAnimations];
// Override point for customization after application launch
[window makeKeyAndVisible];
}
我使用标签栏应用程序模板启动了应用程序,viewControllerB
类型为UITabBarController
. 我肯定在这里做错了什么。任何指针?