Audio Queue コールバック関数は C スタイルの関数でなければなりませんか? それとも、客観的なCスタイルのメソッドにすることができますか?
2 に答える
7
API に完全に依存します。API が関数、ブロック、またはメソッドを呼び出す場合は、それを使用する必要があります。
コールバック関数の型が次のようなものである限り:
void (*hollabackman)(AudioGunk*foo, void*context);
コールバックを設定するための API は次のようなものです。
setCallback(hollabackman func, void *context);
次に、次のことができます。
- myMethod
{
setCallback(&myCallbackFunc, (void *)self);
}
- (void) hollaedBack: (AudioGunk*) aGunk
{
.....
}
それで:
void myCallbackFunc(AudioGunk *foo, void *context)
{
MyClass *self = (MyClass *) context;
[self hollaedBack: foo];
}
retain
コールバックを設定するときは自分自身で行い、コールバックを破棄するときだけバランスを取ることをお勧めしrelease
ます。
于 2011-03-31T16:31:16.730 に答える
1
CoreAudio (AudioQueueServices を含む) には ObjectiveC インターフェイスがありません。純粋な C は、CoreAudio と直接インターフェイスするための答えです。
ただし、シングルトンの ObjectiveC オブジェクト メソッドを呼び出すいくつかのラッピング C 関数を作成することはできます。
于 2011-03-31T16:32:39.850 に答える