在ViewController dealloc上的流氓僵尸

时间:2013-01-03 11:31:53

标签: iphone xcode ipad dealloc zombie-process

在Xcode中,启动一个新的主 - 详细信息项目。称之为'测试'。

为其添加新的“文件”。使用XIB将其设为UIViewController文件。称之为TestViewController。

修改insertNewObject:方法中的MasterViewController代码,说明这一点:

-(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];
}

1 个答案:

答案 0 :(得分:0)

我猜你的TestViewController有出口和属性。如果任何这些属性/出口过度释放,将导致此错误。确保[super dealloc]也是dealloc方法的最后一行