【问题标题】:AVAudioPlayer playback results in class _NSThreadPerformInfo autoreleased with no pool in place - just leakingAVAudioPlayer 播放导致类 _NSThreadPerformInfo 自动释放,没有适当的池 - 只是泄漏
【发布时间】:2013-01-28 18:03:22
【问题描述】:

Mucho tiempo 浪费了这个 - 我使用 AVAudioPLayer 进行了相当简单的播放,但是当文件完成播放时,我在调试窗口中收到此消息:

objc[39752]: _NSThreadPerformInfo 类的对象 0x7304d80 自动释放,没有适当的池 - 只是泄漏 - 打破 objc_autoreleaseNoPool() 来调试

这是我的播放和回调函数(我已经简化了文件名的创建,但错误是一样的):

@implementation PlaybackEngine {
    int _pbIndex;
    AVAudioPlayer *_player;
    NSArray *fileList;
    BufferStores *_BS;
}
....

    -(BOOL)startPlayback {
        NSURL *playURL = [[NSURL alloc] initWithString:[[DOCUMENTS_FOLDER stringByAppendingPathComponent:@"28Jan13_17:13:21.aif"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

        printf("Playback file URL = %s\n", [[playURL path] UTF8String]);
        _player = [[AVAudioPlayer alloc] initWithContentsOfURL:playURL error:nil];
        _player.delegate = self;

        [_player prepareToPlay];
        [_player play];

        self.playing = YES;
        return YES;    
    }

    -(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {

        // check for player stopping due to bad audio data
        if (!flag) {
            printf("Player finished playing due to bad audio data");
        }

        self.playing = NO;
        _player = nil;

    }

我尝试在objc_autoreleaseNoPool 上设置断点,但它永远不会被击中。我犯了什么明显的 ARC 错误?

【问题讨论】:

  • 您是否在后台线程中执行此操作?你确定你在那个线程中创建了一个自动释放池吗?
  • 不,它在主线程中。我什至无法弄清楚 _NSThreadPerformInfo 是什么,在搜索文档和 stackoverflow 时都没有出现。
  • 你修改了你的 main.m 吗?你应该有一个 @autoreleasepool { .... } 东西
  • 是的,我有,如果我没有,我估计会有更多的错误消息!还是谢谢

标签: ios automatic-ref-counting avaudioplayer


【解决方案1】:

好吧,我似乎已经解决了。 Apple Dev Support 告诉我这个错误永远不会发生,这让我认为它一定是 5.x SDK 中的一些模糊错误,但最后我整理了我所有的类,将 ivars 重新定义为属性或扩展中的属性视情况而定,确保我所有的属性修饰符都是正确的,并且问题已经消失。

抱歉,我无法明确指出罪魁祸首,但显然是内存管理问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多