Вызывать событие изнутри родной функции c? - PullRequest
0 голосов
/ 19 апреля 2011

Я разрабатываю приложение, которое выполняет обратный вызов родной функции c после воспроизведения системного звука.Я хотел бы вызвать событие, когда это произойдет, так что подписчик на мой взгляд может обработать его.

-(void) completionCallback(SystemSoundID mySSID, void* myself) {
   [[NSNotificationCenter defaultCenter] postNotificationName:@"SoundFinished" object: myself];
}

Я получаю unrecognized selector sent to instance ...

В представлении у меня есть следующий код:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(soundStopped) name:@"SoundFinished" object:nil];

...

-(void) soundStopped: (NSNotification*) notification {
    NSLog(@"Sound Stopped");
}

Я крайне плохо знаком с целью-c, где я ошибаюсь?

Обновление Точная ошибка:

    2011-04-18 19:27:37.922 AppName[5646:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[BackgroundTestViewController soundStopped]: unrecognized selector sent to instance 0x13b4b0'

Ответы [ 2 ]

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

-soundStopped и -soundStopped: - это два разных имени метода. Двоеточие является частью имени метода, но вы оставили его при вызове -addObserver:selector:name:.

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

Проблема в вашем обработчике уведомлений (вы зарегистрировали селектор, который не обрабатывается наблюдателем). Покажите нам, как вы добавляете наблюдателя. Нет проблем с отправкой уведомления из функции "обычного C".

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