代码之家  ›  专栏  ›  技术社区  ›  Jordan

第二次调用avaudioplayer->exc_bad_access(代码已发布,我错过了什么?)

  •  0
  • Jordan  · 技术社区  · 14 年前

    我用这个代码在每次通话中播放不同的MP3文件。第一次通过效果很好。第二次碰撞,如下所示。

    h

    AVAudioPlayer *player;
    @property (nonatomic, retain) AVAudioPlayer *player;
    

    m

    -(void)load:(NSURL *)aFileURL {
     if (aFileURL) {
    
      AVAudioPlayer *newPlayer =
      [[AVAudioPlayer alloc] initWithContentsOfURL: aFileURL
                          error: nil];
    
      [aFileURL release];
      self.player = newPlayer; // CRASHES HERE EXC_BAD_ACCESS with second MP3a
      [newPlayer release];
    
      [self.player prepareToPlay];
      [self.player setDelegate:self];
     }   
    }
    

    我知道我一定错过了什么,有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  0
  •   kennytm    14 年前
     [aFileURL release];
    

    你不应该 -release 中的URL -load: ,因为该函数不是所有者。exc-bad-u访问可能是由于该URL的双重发布。

    尝试删除此行。