需要协助在uiactionsheet tap上播放声音

时间:2014-04-07 06:04:44

标签: ios objective-c avfoundation uiactionsheet

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if(actionSheet.tag == 2) {
        if(buttonIndex != actionSheet.cancelButtonIndex) {
            NSString *s = [actionSheet buttonTitleAtIndex:buttonIndex];
            NSString *soundFile = [[NSBundle mainBundle] pathForResource:s ofType:@"m4a"];
            NSURL *soundUrl = [NSURL fileURLWithPath:soundFile];
            AVAudioPlayer *player = [[AVAudioPlayer alloc]initWithContentsOfURL:soundUrl error:nil];
            player.numberOfLoops = 0;
            [player play];
        }
    }
}

当我在[player play];上放置断点并跳过时,iPhone正在播放声音。没有断点它不播放声音。为什么会这样?

1 个答案:

答案 0 :(得分:0)

我认为您的项目已启用ARC。

当ARC在方法执行后启用局部变量时,

因此,您必须将AVAudioPlayre对象声明为全局对象。

它会保持你的物体,直到视野消失。