1

我只支持纵向 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 中。最初我只是保留了默认的 Portrait 子句,但将其更改为:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationPortrait) { // Or whatever orientation it will be presented in.
        return YES;
    }
    return NO;
}

我正在使用 ARC 顺便说一句。

希望这将有助于阻止崩溃。我的 info.plist 有纵向和纵向颠倒。除了我的主视图有多个 ViewController 并将其设置为:

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 个 ViewController,我使用 Navigation 控制器来推送几个 ViewController:

- (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 的 SHKActivityIndi​​cator 的一部分,它有一个通知正在捕获屏幕旋转及其导致问题的选择器:

[[NSNotificationCenter defaultCenter] addObserver:currentIndicator selector:@selector(setProperRotation) name:UIDeviceOrientationDidChangeNotification object:nil];
4

2 回答 2

1

听起来您的 ViewController 已释放,另一个 Object 收到 setProperRotation 消息。检查您的 ViewController 是否还活着。

mainViewController=[[MainViewController alloc] init];
[self.window addSubview:mainViewController.view];

这就是问题所在。您只添加视图。ARC 认为您不再需要 MainViewController。

  • 将 MainViewController 设为 Class 变量或
  • 设置 window.rootViewController

    self.window.rootViewController = mainViewController;
    
于 2012-06-27T07:28:44.317 回答
0

该异常表明您可能过度释放了一个应该响应的对象-setProperRotation。查找该对象并尝试了解您忘记保留它的位置(例如,使用对象分配工具跟踪其保留和释放)

于 2012-06-27T07:30:30.853 回答