2013-03-04 147 views
0

我真的很惊讶,当我在代码中启用ARC时,仪器在我的代码中的pushviewcontroller显示内存泄漏。以下是我的代码:pushviewcontroller在ARC中导致内存泄漏

AddCallDetailsViewController *lAddCallDetailsViewController=[[AddCallDetailsViewController alloc]init]; 
lAddCallDetailsViewController.isAllDay = isAllDay; 
lAddCallDetailsViewController.delegate = self; 
lAddCallDetailsViewController.currentDayinCalender = curdate; 
lAddCallDetailsViewController.isFromEditCall = YES; 
[self.navigationController pushViewController:lAddCallDetailsViewController animated:YES]; 

以下是显示该点100%泄漏的仪器的回溯。

任何帮助解决这个问题将不胜感激。

enter image description here

+0

是每次每个这样的情况,当你尝试推的ViewController – 2013-03-04 05:38:26

+0

此外,我在这个论坛上同类的许多问题,但他们大多是预-ARC和启用的ARC没有任何适用于完全解决问题的答案。 – execv 2013-03-04 05:38:55

+0

每当我尝试运行仪器,它显示这个问题... – execv 2013-03-04 05:40:05

回答

0

只是尽量增加“lAddCallDetailsViewController”的范围,以一流的水平.. 在.m文件.h文件中或私人范围。

AddCallDetailsViewController *lAddCallDetailsViewController; 

在.m文件

lAddCallDetailsViewController=[[AddCallDetailsViewController alloc]init]; 
lAddCallDetailsViewController.isAllDay = isAllDay; 
lAddCallDetailsViewController.delegate = self; 
lAddCallDetailsViewController.currentDayinCalender = curdate; 
lAddCallDetailsViewController.isFromEditCall = YES; 
[self.navigationController pushViewController:lAddCallDetailsViewController animated:YES]; 
+1

是否有任何具体的原因,改变范围将解决这个问题?我有很多对象,并且在课堂级别的范围越来越大,可能会在代码中产生一些问题...... – execv 2013-03-04 06:35:31

+0

将范围更改为类级别时,只有在内存中没有此类实例时才会执行分配。 – Ganapathy 2013-03-04 06:38:23

+0

虽然改变对象的范围到课堂级别已经解决了我的问题,如果你能解释我背后的原因,这真的很有帮助吗? – execv 2013-03-04 07:19:45