CCCallFuncND は構造体型では機能しません (また、ARC でもうまく機能しません)。
代わりに、はるかに簡単で強力なブロック版を使用してください。
CGPoint posSending = coordinate.position;
id handleTail = [CCCallBlock actionWithTarget:self block:^{
// do something with posSending:
someNode.position = posSending;
}];
CGPoint
参考までに、エラーは、タイプをタイプに割り当てようとしたためですvoid*
。CGPoint のアドレスをアドレス演算子 ( &posSending
) で渡して使用したとしても、handleTail メソッドでガベージを受け取ります。そのメソッドが呼び出されるまでに、posSending へのポインターは有効ではなくなります。これは、posSending がスタック上に作成されたためです。
CGPoint の malloc が機能すると考える人もいるかもしれませんが、これは安全ではありません。なぜなら、(シーンの変更や stopAction の呼び出しにより) handleTail メソッドが呼び出されるという保証がないからです。したがって、受信側のメソッドがその malloc されたポインターを実際に解放できるという保証はありません。
さらに、handleTail メソッドが正しく宣言されておらず、void* パラメータを受け取ります。
-(void)handleTail:(void*)data
{
}
これらすべての 1 つのポイント: いつでもどこでも、ブロックを使用します。