我在外部類中有這種方法,每當我的遊戲中的charachter碰到牆時(大約每5秒平均一次)就會被調用。我不明白這一點。我認爲自己處於內存管理之上。每次調用該方法時,都會泄漏少量內存(Malloc 38或42字節),這種情況會持續發生,遊戲就會凍結。這裏是我的代碼:AVAudioPlayer內存泄漏
-(void)playBoing {
int x = (arc4random()%3)+1;
NSString *path = [NSString stringWithFormat:@"/boing_0%i.aif", x];
NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
resourcePath = [resourcePath stringByAppendingString:path];
if (boing != nil) {
boing = nil;
boing.delegate = nil;
[boing release];
}
boing = [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:resourcePath] error:nil];
boing.delegate = self;
boing.volume = 1;
[boing play];
}
哦,我明白了。謝謝你,這是一個很好的幫助 –
這是一個合理的解決方案。代碼中的原始問題是在釋放它之前將boing設置爲零,因此您始終將釋放發送到nil。通常你會釋放,然後設置一個變量爲零,如果有必要。 –