Использование необъявленного идентификатора 'creationCallback' - PullRequest
0 голосов
/ 19 апреля 2011

Я пытаюсь определить, когда закончился звук, используя метод AudioServicesAddSystemSoundCompletion.4-й параметр ожидает функцию C, которую я реализовал ниже.Я получаю сообщение об ошибке

Use of undeclared identifier 'completionCallback' (first use in this function) при обращении к нему.Ни один из онлайн-примеров, которые я видел, никогда не использовал [self completionCallback], и у них нет проблем.

Куда я иду?

1 Ответ

4 голосов
/ 19 апреля 2011

Ну да. Иногда ошибка 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);
}

Смотри также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...