2010-12-30 10 views
0

AVAudioPlayer-iphonesdk에서 메모리 누수를 해결하는 방법. 이리. 내가 내 코드를 제공합니다 .. 메모리 누수는 그것을 해결하는 방법 .. 내 코드에 AVAudioPlayer-iphonesdk에서 메모리 누출 문제를 해결하는 방법

.H 파일

AVAudioPlayer *titlescreenaud; 

하는 .m 파일

titlescreenaud=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"TitleScreen_BgmAudio" ofType:@"mp3"]] error:NULL];//***Memory leaks on here......*** 
titlescreenaud.numberOfLoops=-1; 
[titlescreenaud play]; 

마무리 소리

 -(void)finish 
     { 
     [titlescreenaud stop]; 
     [titlescreenaud release]; 
     titlescreenaud=nil; 
     } 

avaudioplayer을 해제하는 방법 좀 도와주세요 .......

답변

-1

ViewDidLoad에서 AVAudioPlayer 개체를 할당하는 경우 문제가 발생하지 않습니다. 그러나 반복적으로 메소드를 호출하고 객체를 할당 한 경우보다 항상 동일한 객체에 대한 메모리를 할당하려고합니다. 메모리를 해제하기 전에 retainCount를 확인할 수 있습니다.

+0

* '* retainCount'를 확인하지 * 않습니다. 'retainCount' 메소드는 디버깅에는 거의 쓸모가 없으므로 프로덕션 코드에서 절대 사용해서는 안됩니다. – bbum

+0

그는 수동으로 메모리를 공개하기 때문에 그는 그것을 사용할 수 있다고 생각합니다. autorelease를 사용하고 있다면 retaincount를 사용하는 것은 좋지 않습니다. 내가 맞은 bbum인가? – Raxit

+0

Nope; 'retainCount'를 사용하는 것은 결코 좋은 생각이 아닙니다. 객체의 보유 개수는 내부 프레임 워크 구현 세부 사항입니다. 그것이 프레임 워크의 객체이거나 프레임 워크에 전달 된 객체 인 경우 보유 수는 거의 모든 것이 될 수 있으며 여전히 유효합니다. – bbum

0
titlescreenaud=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"TitleScreen_BgmAudio" ofType:@"mp3"]] error:NULL];//***Memory leaks on here......*** 

계기는 메모리 누수가 있음을 나타냅니다. 이것이 의미하는 바는 그 라인에 할당 된 어떤 것이 배포되지 않았다는 것입니다. 실제 누출은 다른 곳에서있을 수 있으며 누락 되었기 때문에 가능성이 높습니다 release.

finish 메서드가 실제로 호출되고 있습니까? releasetitlescreenauddealloc으로 사용하십니까?

문제를 구체적으로 지적 할 수있는 충분한 코드가 없습니다.

관련 문제