2011-12-28 6 views
2

こんにちは私は奇妙な問題を抱えています。xcodeにアップグレード4.2今すぐexc_bad_access on dimissModalViewcontroller

私のアプリは "PageControl"(Appleの例)のサンプルコードに基づいています。 ほとんどのものが起こっている水平スクロールビューを使用します。 彼の下に私はUIToolbarを持っています。そこから私はモーダルviewcontrollerと呼んでいます。

XCode 4では、すべてが魅力的に機能しましたが、XCode 4.2(新しいSDKを使用)にアップグレードした後、私はdimissModalViewcontrollerで「exc_bad_access」を取得しました。 一番面白いのは、すぐには起こらないが、modalViewcontrollerを2〜3回表示したり消したりした後でなければならないということです。

単純化するために、元のサンプルコードに戻り、そのコンテキストでmodalVieWcontrolerを実装しようとしました。今まで運がない。元PageControlコードで

私はそうのようなのUIViewControllerにNSObjectのから「ContentController」の種類を変更:

@interface ContentController : UIViewController 
{ 
    NSArray *contentList; 
} 

を、私はそうのようなPhoneContentControllerという名前(ContentControllerから)サブクラスでpresentModalViewcontrollerを呼び出します(私が使用通知私はどこからでも呼び出すことができ)

-(void) showExplanationsModal:(NSNotification*)notification{ 

    ExplanationsViewController *xplViewController = [[[ExplanationsViewController alloc] initWithNibName:@"Explanations" bundle:nil]autorelease]; 

    [self presentModalViewController:xplViewController animated:YES]; 
} 

のでようmodalViewcontrollerの解任がモーダルビュー自体から呼び出される: (通知はいくつかの他のSTUを開始TOT使用されますFF)

- (IBAction)onClose 
{ 
    [self dismissModalViewControllerAnimated:YES]; 

    [[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:self]; 

} 

このコードは、iOS4をSDKと正常に動作しますが、iOS5をSDKで時折excec_bad_accessをレンダリングします。 iOS4 SDKでアプリケーションをコンパイルすると、iOS5デバイスでもrus fineです。 ゾンビを使ってみましたが、これは特定のオーバーリリースされたオブジェクトを指しません。私はここでの問題を示すサンプルプロジェクトのコピーを入れている

私は一種のすでに数日間、このいずれかにこだわって は... http://www.sesni.biz/pagecontrol.zip

+0

これはまったく推測ですが、iOS5で変更されたモーダルビューコントローラを削除しました。モーダルビューコントローラでdismissを呼び出すと、親ビューコントローラに転送されます。しかし、私は、提示コントローラ(彼らは今異なっている)上で呼び出される必要があることを発見しました。おそらく '[self presentingViewController] dismissModalViewControllerAnimated:YES];'を試してみてください。 –

+0

Hmm。運がない。とにかく、お返事をよろしくお願いいたします。 – SnipSens

+0

Xcodeをテキストファイルに保存して、Xcodeを再インストールしてみてください。 – Gabe

答えて

0

問題が見つかりました:ContentControllerのタイプをNSObjectからUIViewcontrollerに変更しました。これはiOS4 SDKでうまくいきましたが、iOS5 SDKでクラッシュしました。

1

その問題がである私のためと思われますonCloseメソッド。最初にメッセージを送信してください(このオブジェクトはすぐに無効になります)。

- (IBAction)onClose 
{ 
    [[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:nil]; 
    [self dismissModalViewControllerAnimated:YES]; 

} 
+0

あなたのソリューションは妥当と思われますが、もう成功しません。通知が削除されてもアプリケーションがクラッシュします。とにかくありがとう。 – SnipSens

+0

重要な情報です。このmodalViewcontrollerの 'dealloc'メソッドと' viewDidUnload'メソッドをチェックしてください。 –

+0

私は実際には機能を持たないテスト設定を実行していますので、[super dealloc]と[super viewDidUnload]以外のdeallocメソッドとviewDidUnloadメソッドには何もありません – SnipSens

関連する問題