Ну да. Иногда ошибка messaqge означает именно то, что он говорит. completionCallback
должно быть определено выше playAndRelease
.
Первый вариант: объявлять, но не реализовывать, completionCallback
.
void completionCallback (SystemSoundID mySSID, void* myself);
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,NULL,NULL,completionCallback,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
void completionCallback (SystemSoundID mySSID, void* myself) {
//NSLog(@"completion Callback");
AudioServicesRemoveSystemSoundCompletion (mySSID);
[(SoundEffect*)myself release];
}
Или определите это заранее:
static void completionCallback (SystemSoundID mySSID, void* myself) {
//NSLog(@"completion Callback");
AudioServicesRemoveSystemSoundCompletion (mySSID);
[(SoundEffect*)myself release];
}
-(void)playAndRelease{
AudioServicesAddSystemSoundCompletion (_soundID,NULL,NULL,completionCallback,(void*) self);
AudioServicesPlaySystemSound(_soundID);
}
Смотри также: