在推送Viewcontroller时保留异常行为

时间:2013-01-29 06:27:17

标签: objective-c uinavigationcontroller retaincount

 -(void)NewButton
    {
        ApplianceViewController *VC = [[ApplianceViewController alloc] initWithNibName:@"ApplianceViewController" bundle:[NSBundle mainBundle]] ;

        NSLog(@"Retain count before pushViewController:%d",VC.retainCount);//prints1 
        [self.navigationController pushViewController:VC animated:YES];
        NSLog(@"Retain count after pushViewController:%d",VC.retainCount);//prints 7
        [VC release];
        NSLog(@"Retain count after Release:%d",VC.retainCount);// prints 6
    }

在我的代码中,保留计数异常增加。我有很多时间。请帮助。

2 个答案:

答案 0 :(得分:1)

对象的绝对retainCount没有意义。

有关详细信息,请参阅:http://www.whentouseretaincount.com

您看到的保留计数是框架的内部实现细节。它们实际上毫无意义。更可能的是,保留计数与该代码中的保留计数一样高,因为您将视图控制器纠缠成动画,这需要多个引用和一些复杂的幕后问题。

您发布的代码不是问题。

将分配工具与“仅跟踪实时参考”和“跟踪参考计数”一起使用。然后重现您的泄漏并单击相关对象的保留/释放事件清单。这将为您提供一个确切保留(和释放)对象的确切列表,它将告诉您它为什么仍然在内存中。

答案 1 :(得分:0)

其实我有一个属性

@property(非原子,保留)IBOutLet UITableView myTableView;

我从nib文件获取引用。我刚刚用assign替换了retain。问题解决了。