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があり、ナビゲーションコントローラーを使用していくつかの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が解放され、別のオブジェクトがsetProperRotationメッセージを受信したようです。ViewControllerが動作しているかどうかを確認します。

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

ここに問題があります。ビューのみを追加します。ARCは、MainViewControllerはもう必要ないと考えています。

  • MainViewControllerをクラス変数として作成するか、
  • window.rootViewControllerを設定します

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

例外は、に応答するはずのオブジェクトを過剰リリースしている可能性が高いことを示しています-setProperRotation。そのオブジェクトを探して、それを保持するのを忘れた場所を理解してみてください(たとえば、オブジェクト割り当て手段を使用してその保持と解放を追跡します)

于 2012-06-27T07:30:30.853 に答える