この問題に関して多くの記事を残して申し訳ありませんが、私はここで進歩しています。はコールバック中に何かできますか?基本的な目的の問題
私はコールバック関数を持っています。これはC言語であり、新しいバッファが到着したときに呼び出されました。
ここでは、コールバックで何もしないこと、mallocなどではないと言われました。
今度は、新しいバッファを別のクラスに送信したい(サークルバッファを作成してバッファをたくさん保存する)。
しかし、コールバックから別の関数を呼び出すと、その関数内でやっているのと同じことです。その関数でDSPを実行すると時間がかかるので、そのコールバックでそれを行うのと同じです。
froof: 別のクラスの別の関数とそのokにデータを送信していますが、私がNSLOG
にしようとすると、もう一度このメモリリークが発生します。ここ
iはコールバックからを呼び出す他のクラスである:
- (id)init
{
self = [super init];
if (self)
{
data = malloc (sizeof(SInt16) * 4000);
}
return self;
}
-(void)sendNewBuffer:(SInt16*)buffer
{
data=buffer;
NSLog(@"data arrived size is : %lu",sizeof(data));
for(int i=0; i<sizeof(data);i++)
{
NSLog(@"%d",data[i]);
}
}
ONLY comment the log
、それはメモリリークなしで動作します。 これはコールバックがそれを待っていることを意味します!
どうすれば他の人と並行してそのデータを処理できますか? 私は今それを1週間費やしています。
ありがとうございました。
明確にする必要があります。誰があなたに何もしないように言ったのですか?そして、もし彼らが本当に「何か」と言ったら、あなたは何もできなかったらコールバックが存在しないので、彼らは不愉快に不正確になっていました。あなたが知る必要があることは、自分が何であるかの詳細と、コールバックコンテキストから行うことが許可されていないことです。 –
コールバックは何を呼びますか? – Dani
また、サイドノートでは、バッファ・データをどのようにループするべきではありません。 'sizeof'はパラメータデータ型のサイズを返します。あなたは、署名された16ビット整数へのポインタのサイズを求めています。ポインタが指しているバッファのサイズを尋ねるのではありません。別の引数としてバッファの長さを渡す必要があります。 –