我一个controller 被pop掉后,没有调用dealloc,我在dealloc里打印了,没发现调用,但是当我在viewwilldisappear里手动把里面的tableview设为nil之后,dealloc就被调用了,这是怎么回事?
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.navigationController.navigationBarHidden = NO;
if (_tableView) {
[_tableView removeFromSuperview];
_tableView = nil;
}
}
-(void)dealloc{
[Util showAlertView:@"nursery vc dealloc"];
}
楼主 关于释放的知识 可以参考下 viewController的生命周期
dealloc是在对象被释放的时候调用。不进dealloc说明tableview还没有被释放。
正确地应该是在当前控制器销毁的时候会被调用
alloc分配内存,显然dealloc是释放时调用,对象诞生消失只调用一次