NSData dataWithContentsOfFile 100%泄漏仪器

时间:2012-12-29 18:41:45

标签: iphone objective-c ios ios5 ios6

更新

为什么NSData dataWithContentsOfFile行在仪器中出现泄漏? 我正在使用ARC。部署目标是iOS 5.0

@autoreleasepool
{
    AudioPlayerAV *context = [userInfo valueForKey:@"self"];
    NSString *filepath = [userInfo valueForKey:@"filepath"];
    [context.player stop];

    //check if file is there fetch player from dict
    AVAudioPlayer *_player = nil;
    NSError *error = nil;
    NSData *filedata = [NSData dataWithContentsOfFile:filepath];

    _player = [[AVAudioPlayer alloc]initWithData:filedata error:&error]; 
    context.player = _player;
    NSLog(@"loadAndPlay error : %@",[error description]);
    context.player.numberOfLoops = (context.loop)?-1:0;
    context.player.volume = context.volume;
    [context.player play];
}

1 个答案:

答案 0 :(得分:1)

有时,乐器指向错误的行,我认为this中的AVAudioPlayer泄漏。

来自:Leak from NSURL and AVAudioPlayer using ARC

  

看起来是Apple代码中的泄漏...我尝试使用两者

     

- [AVAudioPlayer initWithData:error:]和    - [AVAudioPlayer initWithContentsOfURL:error:]

     

在第一种情况下,分配的AVAudioPlayer实例保留传入的NSData。在第二个中,保留了NSURL中传递的内容。

     

您可以看到AVAudioPlayer对象然后创建一个C ++对象AVAudioPlayerCpp,它再次保留NSData

     

稍后,当AVAudioPlayer对象被释放时,NSData被释放,但是从来没有来自关联的AVAudioPlayerCpp的释放调用......(你可以从附图中看出来)

检查一下,answer附加了一些乐器截图。