我支持仅限肖像ATM,旋转设备时出现这些错误:
[__NSCFData setProperRotation]: unrecognized selector sent to instance 0x2dc890
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFData setProperRotation]: unrecognized selector sent to instance 0x2dc890'
这是在iOS5.1中。最初我刚刚离开了默认的肖像子句,但将其更改为:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationPortrait) { // Or whatever orientation it will be presented in.
return YES;
}
return NO;
}
我正在使用ARC btw。
希望这有助于阻止崩溃。我的info.plist有纵向和纵向颠倒。除了我的主视图有多个ViewControllers并将其设置为:
之外,我没有其他任何操作。self.wantsFullScreenLayout=YES;
任何人的想法?提前谢谢。
我的项目添加了appdelegate的主视图:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
mainViewController=[[MainViewController alloc] init];
[self.window addSubview:mainViewController.view];
我在mainViewController上有2个ViewControllers,我使用导航控制器来推送几个ViewControllers:
- (void) loadActionsView {
NSArray* views = [self.navigationController viewControllers];
if ([views containsObject: actionsPanelViewController])
{
[self.navigationController popToViewController:actionsPanelViewController animated:YES];
} else {
[self.navigationController pushViewController:actionsPanelViewController animated:YES];
}
[[StateModel stateModel] setCurrentScreenIndex:0];
}
这是第一个名为btw的视图。
更新2,找到解决方案/问题:
我正在使用SHK SHKActivityIndicator的一部分,它有一个捕获屏幕旋转的通知及其导致问题的选择器:
[[NSNotificationCenter defaultCenter] addObserver:currentIndicator selector:@selector(setProperRotation) name:UIDeviceOrientationDidChangeNotification object:nil];
答案 0 :(得分:1)
听起来您的ViewController已发布,另一个Object收到setProperRotation消息。检查你的ViewController是否还活着。
mainViewController=[[MainViewController alloc] init];
[self.window addSubview:mainViewController.view];
这是问题所在。您只添加视图。 ARC认为你不再需要你的MainViewController了。
设置window.rootViewController
self.window.rootViewController = mainViewController;
答案 1 :(得分:0)
该异常表明您可能过度释放了应该响应-setProperRotation
的对象。查找该对象并尝试了解您忘记保留它的位置(例如,使用对象分配工具跟踪其保留和释放)