Я хочу воспроизвести два звука, но последний только после первого конца.
Я использую AudioServicesAddSystemSoundCompletion так:
NSArray *data = [NSArray arrayWithObjects:target, callback, nil];
NSString *soundPath = [bundle pathForResource:sound ofType:type];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath: soundPath], &soundID);
AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, playSoundFinished, data);
AudioServicesPlaySystemSound(soundID);
и мой метод playSoundFinished:
static void playSoundFinished(SystemSoundID soundID, void *data) {
NSArray *data_ = (NSArray *)data;
id obj = [data_ objectAtIndex:0];
SEL method = NSSelectorFromString([data_ objectAtIndex:1]);
[obj performSelector:method];
}
В документации указывается, что последний параметр должен быть void*
и что это данные для работы в методе обратного вызова, но как я могу использовать NSArray, который я передаю в качестве аргумента?Я новичок в C и Objective-C, так что извините, если это глупый вопрос.Кастинг работает нормально, но когда я пытаюсь получить доступ к первой позиции, происходит плохое выполнение.Я действительно не понимаю, почему void * type.Что это значит?
В этом другом посте парень передает UIButton без каких-либо кастингов, и эта идея мне тоже не сработала.
Можете ли вы помочь мне?
Заранее спасибо.