【问题标题】:memory leak in objective-c xcode codeobjective-c xcode代码中的内存泄漏
【发布时间】: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


【解决方案1】:

我猜你没有使用 ARC,如果是这样的话你没有发布 mSoundManager。

使用 ARC(最佳选择)或 release mSoundManager(不太好的选择)。

单击右侧的蓝色指示器会显示以下内容:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-29
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多