iPhone:modalview和委托中的Zombie对象

时间:2011-09-19 16:53:57

标签: iphone ios

我的应用程序崩溃有时会发生,我测试了僵尸已启用,并且这个方法发现它是ZOMBIE,这种方法通常可以正常工作,但在某些条件下,如在某些情况下来回导航很多,它会崩溃。

我在@property中保留了datepickerView并以deaaloc发布。

enter image description here

2 个答案:

答案 0 :(得分:1)

在dealloc中将datePickerDelegate设置为nil。如果它在第一次实例化后具有retain属性,则委托可能在其中具有死引用,并且在启用Zombies时将随机导致创建和崩溃。发生崩溃是因为保留属性释放了先前的值,如果它是一个死引用崩溃随后发生 - 随机。同时最好将代理设置为分配,而不是保留

在仪器中运行,在分配中设置“记录参考计数”(您必须停止记录以设置选项)。导致选择器运行,停止记录,搜索那里的ivar(datePickerView),向下钻取,你将能够看到所有保留,释放和自动释放发生的位置。

Reference Counts

答案 1 :(得分:0)

我认为没有理由在从堆栈中弹出选择器之后将其保留在内存中......

不是保留DatePickerController,而是在presentSemiModalViewController之后删除“autorelease”和“release”,根据SemiModelDatePicker上的reednj帖子

TDDatePickerController* datePickerView = [[TDDatePickerController alloc] 
                              initWithNibName:@"TDDatePickerController" 
                              bundle:nil];
datePickerView.delegate = self;
[self presentSemiModalViewController:datePickerView];
[datePickerView release];

希望这可以缓解这个问题。否则,它可能只是SemiModalDatePicker扩展的问题。