【发布时间】:2013-11-09 20:13:48
【问题描述】:
我收到一个分析器错误,显示以下代码中存在潜在泄漏:
- (void)viewDidLoad {
[super viewDidLoad];
mAngle = 0.0;
cligneBool = YES;
SoundManager *mSoundManager = [[SoundManager alloc] init];
[mSoundManager initOpenAL];
[mSoundManager loadSound:[[NSBundle mainBundle] pathForResource:@"bing.wav" ofType:nil] SoundKey:@"bing"];
[mSoundManager loadSound:[[NSBundle mainBundle] pathForResource:@"ding.wav" ofType:nil] SoundKey:@"ding"];
[mSoundManager loadSound:[[NSBundle mainBundle] pathForResource:@"click.wav" ofType:nil] SoundKey:@"click"];
[mSoundManager loadSound:[[NSBundle mainBundle] pathForResource:@"die.wav" ofType:nil] SoundKey:@"die"];
[mSoundManager loadSound:[[NSBundle mainBundle] pathForResource:@"kaboom.wav" ofType:nil] SoundKey:@"kaboom"];
[mSoundManager loadMusic:@"Musique - Finale.mp3" MusicKey:@"intro"];
[mSoundManager loadMusic:@"game_music01.wav" MusicKey:@"game01"];
[mSoundManager playMusic:@"intro" Loops:YES];
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSString *volume = (NSString *)[userDefault objectForKey:@"volume"];
sunAnimate.center = CGPointMake(self.view.frame.size.width/2,self.view.frame.size.height/2);
if(volume == nil) {
[userDefault setValue:@"1.0" forKey:@"volume"];
} else {
float mVolume = [volume floatValue];
[mSoundManager setMusicVolume:mVolume];
}
[self sunTurn];
[NSTimer scheduledTimerWithTimeInterval:3.10 target:self selector:@selector(cligne) userInfo:nil repeats:YES];
}
谁能看出上面这组代码的问题?
这是我在应用程序代码中的最后一个错误,所以如果能帮助清除这个错误,我们将不胜感激!
谢谢!
【问题讨论】:
-
点击错误行右侧的蓝色符号,将显示完整的代码路径和cmets。
-
顺便说一句,与您未能释放
SoundManager无关,如果这不是您的根视图控制器,如果您不invalidate您的关闭此视图控制器,您的代码也会泄漏在viewDidDisappear中重复NSTimer(或在某些时候......但不要尝试在dealloc中这样做)。 Instruments 可能不会报告它,但是如果您查看分配,您会看到视图控制器在您关闭它时可能不会被释放。
标签: objective-c xcode memory-management memory-leaks