我似乎无法解决的内存泄漏

发布于 2025-01-08 12:25:11 字数 570 浏览 0 评论 0原文

所以分析器现在告诉我有内存泄漏。在下面的函数中,它说“分配到‘theAudio’的对象可能泄漏,

我认为它说的是事实,因为该应用程序运行良好几分钟,然后慢慢崩溃。

我尝试过“自动释放”,但它告诉我“对象发送自动释放太多次”。

抱歉,我是个害虫,但有人对此有什么想法吗?

-(void) playFile:(NSString*) nameOfFile { // plays audio file passed in by a string

    fileLocation = nameOfFile;
    NSString *path = [[NSBundle mainBundle] pathForResource:nameOfFile ofType:@"mp3"];
    AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL       fileURLWithPath: path] error:NULL];
[theAudio play];
[fileLocation release];

}

So analyzer is now telling me i have a memory leak. In the function below it says 'potential leak of an object allocated into 'theAudio'

I think it speaks the truth because the app works well for a few minutes then slowly crashes.

I've tried 'autorelease' but it tells me 'object sent autorelease too many times'.

Sorry to be a pest but does anybody have any ideas on this?

-(void) playFile:(NSString*) nameOfFile { // plays audio file passed in by a string

    fileLocation = nameOfFile;
    NSString *path = [[NSBundle mainBundle] pathForResource:nameOfFile ofType:@"mp3"];
    AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL       fileURLWithPath: path] error:NULL];
[theAudio play];
[fileLocation release];

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月下伊人醉 2025-01-15 12:25:11

还没有使用过这个,但您可能需要在播放器上保留一个retain(就像您所做的那样),然后在完成后release它,例如,当您获得 AVAudioPlayerDelegate 方法之一时(因此您需要实现播放器的“委托”。)

Haven't used this, but you probably need to keep a retain on the player (as you do) but then release it when you're done with it, e.g., when you get one of the AVAudioPlayerDelegate methods (so you need to implement the player's `delegate.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文