2012-07-17 47 views
-1

即使我使用autorelease释放结果对象,泄漏工具也会在泄漏仪器中显示100%泄漏。使用autorelease时泄漏?

ResultsViewController *results = [[[ResultsViewController alloc]initWithNibName: 
           @"ResultsViewController1" bundle:nil] autorelease]; 
[results getscore:(int)score:(int)skippedwords:(int)crtwords]; 
[self.navigationController pushViewController:results animated:YES];  
+0

我不知道,甚至会编译。第二行是什么?但是如果我们忽略这一点,你的代码就很好。这意味着泄漏(如果有的话)在其他地方。 – 2012-07-17 12:17:20

+0

这段代码没问题。也许仪器显示你泄漏,因为你有一个在ResultsViewController – iSofTom 2012-07-17 12:22:03

+0

从第二行泄漏我将值传递给resultsviewcontroller – gangadhar 2012-07-17 14:17:12

回答

0

在“Instruments”它总是会显示您为“泄漏”

做一个件事分配/释放“results”自己的自动释放的对象。永远不要使用“Autorelease”,除非你必须将对象返回给其他类或方法。

ResultsViewController *results = [[ResultsViewController alloc]initWithNibName: @"ResultsViewController1" bundle:nil]; 

[results getscore:score :skippedwords :crtwords]; 

[self.navigationController pushViewController:results animated:YES]; 

[results release]; 

因为您已将此控制器推送到导航控制器,因此您不再需要它的实例。快乐编码;)

+0

您将在此代码中拥有Exc_Bad_Access,因为您有两个版本!实际上是错误的 – iSofTom 2012-07-17 12:20:58

+0

!我已经纠正了这个问题:) – 2012-07-17 12:22:12

+0

在问题中使用autorelease没有任何问题。 Pre ARC有一个很好的论点,认为这样做比调用release更好,因为它不太容易出现手动错误 – wattson12 2012-07-17 12:25:05