0

在 Xcode 中,启动一个新的主从项目。称之为“测试”。

向其中添加一个新的“文件”。UIViewController用 XIB把它变成一个文件。称它为 TestViewController。

在方法中修改你的 MasterViewController 代码,insertNewObject:这样说:

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

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

    [initViewController release];
}

现在在 TestViewController.m 中添加一个dealloc方法并简单地调用[super dealloc];

在此处设置断点并运行应用程序。一切都应该运行正常。

但是,如果启用 Zombie 对象,您可能会*** -[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 回答