0

たぶん、私はこれをあまりにも長い間見てきました;) 私のアプリには、NavigationController といくつかの ViewControllers があります。rootViewController からロードされた ViewControllers の 2 レベル下 (mainViewController) の 1 つから、以下のコードがあります。PushViewController から dataViewController に戻った後 (戻るボタンを押すなど)、アプリがクラッシュします。

dataViewController は正常にロードされますが、navigationController の戻るボタンがタップされると、アプリケーションは Object Exception でクラッシュします。私が削除した場合:

[dataViewController release];

アプリは正常に動作します。dataViewController が同じメソッドで初期化されているため、奇妙です。何か案は?

- (void) locationPage 
{

    [[NSNotificationCenter defaultCenter] postNotificationName:@"NotifyRemoveMap" object:nil];
    MyAppDelegate *app = [[UIApplication sharedApplication] delegate];

    UINavigationController *navigation = app.navigationCantroller;
    [navigation popToRootViewControllerAnimated:NO];

    DataViewController *dataViewController = [[DataViewController alloc] initWithNibName:@"DataView" bundle:nil];
    [dataViewController setCategoryId:category];

    MyLanguage *lang = app.lang;
    Mylocation *location = [lang locationForCategoryId:category];

    dataViewController.title = location.name;
    NSArray *locationArray = [lang locations];

    dataViewController.locations = locationArray;
    [navigation pushViewController:dataViewController animated:YES];
    [dataViewController release]; //  With this removed, app doesn't crash
}
4

3 に答える 3

2

あなたの投稿も読んでいません。Exec-Bad-Access の場合は、次の 2 つの言葉があります。

NSZombies を有効にします。

このリンクに従ってください: (アクセス不良の問題を修正するために知っておく必要があるすべてのことを説明しています)

NSZombie と Instruments を使用した電話メモリのデバッグ

乾杯!

于 2010-09-11T03:05:24.540 に答える
1

この問題は、dataViewController がポップされ、その上にある何かにアクセスしようとしたときに発生する可能性があります。その時点ですでに解放されています。詳細については、コンソールを確認してください。さらに良いのは、デバッグ モードで実行することです (デバッグ構成デバッガーでの実行)。

質問を編集して、戻るボタンで実行されるコードを表示できます。

于 2010-09-10T22:04:26.063 に答える
0

あなたはリリースについて話しdataViewControllerますが、あなたのコードはdetailsViewController. 間違ってコピーして貼り付けましたか、それとも間違いですか?

app.navigationControllerbutを使用しないことを検討する必要がありself.navigationControllerます。よりクリーンなデザイン。あまりにも多くのことを知っているフランケンシュタイン オブジェクトとして使用されるアプリ デリゲートへの依存が少なくなります。

于 2010-09-10T22:06:07.610 に答える