По сути код правильный. Если вы хотите настроить несколько заметок, самый простой способ сделать это более эффективным - создать метод, который вы можете запустить для каждой заметки. Итак, создайте новый метод, который принимает строку и возвращает новый элемент AVAudioPlayer:
- (AVAudioPlayer *)getNoteFromFilename:(NSString *)name {
NSString *soundPath = [[NSBundle mainBundle] pathForResource:name
ofType:@"mp3"];
NSURL *fileURL = [NSURL fileURLWithPath:soundPath];
AVAudioPlayer *note = [[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL
error:nil] autorelease];
return note;
}
(Обратите внимание, что для удобства я поменял метод NSURL, авто-релиз, который устраняет необходимость его отдельного освобождения. Мы также возвращаем автоматически выпущенный объект note
, в соответствии с соглашением)
Затем вы можете вызвать этот метод следующим образом:
btn_do = [self getNoteFromFilename:@"do"];
btn_re = [self getNoteFromFilename:@"re"];
и так далее! ...
Редактировать: следующая задача - попробуйте поместить их в массив, чтобы у вас была только одна переменная, за которой нужно следить! Вы можете сделать индекс в массиве соответствующим свойству 'tag' каждой отдельной кнопки, которая вызывает заметку ...