0

システムサウンドサービスを使用して、マイク付きのレコーダーを持っているサウンドを再生し、正常に動作しており、サウンドが停止したときにコールバックを使用しています。

//callback pa saber termina
    AudioServicesAddSystemSoundCompletion (soundID,NULL,NULL,completionCallback,(void*) self); //q es un call back?, q es (void*)self??

//Use audio services to play the sound
AudioServicesPlaySystemSound(soundID);

したがって、音が止まると、次のように呼び出されます。

//usando Callback!
static void completionCallback (SystemSoundID  mySSID, void* myself) {
 NSLog(@"termino");
}

しかし、どうすれば自分のメソッドを呼び出すことができますか?

- (void)stopSoundByDemand{
self.playingMode = NO;
[self.playButton setTitle:@"Play" forState:UIControlStateNormal];
[self stopSound];
 }

それで、私が正しく理解していれば、「コールバック」はCだけのものですか?

このCからobjCメソッドを「コールバック」するにはどうすればよいですか?

私はそれについて読みましたが、理解していません、

Cのみの場合、コールバックとは何かを明確にする必要があります。

メソッドの呼び出し方法、

ありがとう!

4

1 に答える 1

1

自己はあなたのオブジェクトです..あなたのクラスの一部ではないコールバック関数でそれを知るために、あなたはそれを(void *)としてコンテキストパラメータの形で関数に渡します。

ここで、オブジェクトに戻り、コンテキスト変数からそのポインターを取得するメソッドを呼び出します。

あなたの場合、
コンテキストは自分自身と名付けられています: [(id)myself stopSoundByDemand];


一般に、コールバックはどのインスタンスにも属さない関数であるため、自分自身については知りません。

于 2013-01-03T11:57:18.287 に答える