Я реализую простой интерфейс кнопки-звука для игрушечного проекта.Есть несколько кнопок, с отдельными звуками, назначенными для каждой кнопки.Я выполняю все это в fooViewController. {H, m} с атрибутом 'tag' каждого UIButton, например, так:
B0.tag = 0;
B1.tag = 1;
...
У меня также есть массив звуковых файлов, которые я храню в массивестроки, заполненные следующим образом:
sounds[0] = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"caf"];
sounds[1] = [[NSBundle mainBundle] pathForResource:@"bar" ofType:@"caf"];
...
Теперь, когда вызывается событие Touch Up Inside, запускается следующий метод:
-(IBAction)playSoundClip:(id)sender {
if(sounds[[sender tag]] != nil) {
NSError *error;
NSString *temp = [sounds[[sender tag]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AVAudioPlayer *av = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:temp] error:&error];
[av play]
}
}
Я всегда получаю исключение EXC_BAD_ACCESS.Когда я распечатываю строки, они находятся в такте, и, как и следовало ожидать ... несколько пробелов, которые, как я думал, будут учтены строковой кодировкой ^ выше.