Я начинаю программировать на iPhone и пытаюсь создать небольшое тестовое приложение, которое воспроизводит звук при нажатии кнопки. Этот вопрос довольно нуб, так что терпите меня. В значительной степени я пытаюсь понять, как справиться с ситуацией с памятью. Куда я выпускаю созданные экземпляры, чтобы избежать проблем с памятью? Прямо сейчас, если я нажимаю на кнопку несколько раз быстро, приложение вылетает. Я попытался объявить все в viewDidLoad и поместить выпуск в метод dealloc, но в этом случае мне приходится ждать, пока закончится воспроизведение всего звука, прежде чем я смогу воспроизвести звук снова. Я хочу иметь возможность нажимать кнопку в середине воспроизводимого звука и «прерывать его», если это имеет смысл.
То, как написано сейчас, когда вы нажимаете кнопку, вызывается этот метод и воспроизводится звук
-(IBAction)buttonPressed:(id)sender{
NSString *path = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"mp3"];
AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error: NULL];
theAudio.delegate = self;
[theAudio play];
}
В этой настройке это работает так, что я могу «прервать» уже воспроизводимый звук, снова нажав кнопку, и звук возобновится. Однако быстрое нажатие вызывает сбой приложения.