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
ビューにタブ バーが含まれているとエラーが表示されることに注意してください。誰も返信していないので、これは一般的な問題ではないと思います。この問題に対処するリソースが見つかりません。
どういうわけか、アプリケーションを単一の向き (縦向き) で実行するように指示し、向き変更のイベントを送信しないようにすることはできますか? これは私の問題を解決するかもしれませんが、これは私が探している代替手段です。
ありがとうポール、あなたのコメントは役に立ちました。問題を修正することができましたが、必要のないビューのメモリを保持するコストがかかりました。何が起こっているかは次のとおりです。
別のビュー (ビュー B) を開くビュー (ビュー A) があります。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
. 私は間違いなくここで何か間違ったことをしています。ポインタはありますか?