2012-07-17 1 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

나는 그것이 심지어 컴파일 될지 확신하지 못합니다. 두 번째 라인은 무엇입니까? 하지만이를 무시하면 코드가 정상입니다. 누설 (다른 곳이 있다면)이 다른 곳에 있음을 의미합니다. –

+0

이 코드는 문제가 없습니다. 어쩌면 인스 트루먼 트가 당신에게 누수가 있기 때문에 당신은 누출을했기 때문에 ResultsViewController – iSofTom

+0

두 번째 라인에서 나는 resultsviewcontroller에 값을 건네주고있다 – gangadhar

답변

0

"Instruments"항상 스스로 "누수"

수행 한 일이 ALLOC/해제 "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

+0

실제로 실수였습니다! 나는 이미 그것을 고쳤다 : –

+0

질문에 사용 된 방식으로 autorelease를 사용하는 데 아무런 문제가 없다. Pre ARC에는 수동 오류가 발생하지 않았기 때문에이를 수행하는 것이 전반적인 릴리스보다 전반적으로 좋은 주장이있었습니다. – wattson12

관련 문제