0

Xcode で、新しいマスター/ディテール プロジェクトを開始します。それを「テスト」と呼びます。

それに新しい「ファイル」を追加します。UIViewControllerXIBでファイル化します。それを TestViewController と呼びます。

insertNewObject:メソッド内の MasterViewController コードを次のように変更します。

-(void)insertNewObject:(id)sender
{
    TestViewController *initViewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];

    [self.navigationController pushViewController:initViewController animated:YES];

    [initViewController release];
}

deallocメソッドを TestViewController.m に追加し、単純に呼び出します[super dealloc];

ここにブレークポイントを置き、アプリを実行します。すべて正常に実行されるはずです。

ただし、ゾンビ オブジェクトを有効にすると*** -[TestViewController class]: message sent to deallocated instance 0x7484f20 error、ステップ オーバー時にが表示される場合があります[super dealloc]

これもわかりますか?私は iOS6.0 シミュレーターを使用しており、これにつながった問題をデバッグしようとしていることに遭遇しました。

考えていただければ幸いです。iOSのバグですか?それともシミュレーターのバグ?

「明快さ」のための TestViewController コードを追加

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;   
} 

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning 
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)dealloc
{
    // Zombie here???
    [super dealloc];
}
4

1 に答える 1

0

TestViewController にはアウトレットとプロパティがあると思います。これらのプロパティ/アウトレットのいずれかが過剰にリリースされていると、このエラーが発生します。[super dealloc] が dealloc メソッドの最後の行であることも確認してください

于 2013-01-03T17:01:02.333 に答える