2012-03-13 5 views
0

これは、ノブの質問のように聞こえるかもしれません。私はそれをクラッシュさせるために何をしているのかを理解するために何日も努力しましたが、私はそれを理解することはできません。CCSchedulerが、割り付け解除されたインスタンスに送信されたメッセージとしてクラッシュします。

CCActionsを使用するさまざまなオブジェクトがあります。オブジェクトを画面から削除する必要があるときは、[spriteObject stopAllActions]を呼び出します。私はその行動を発表する。 (私はこの種のクラッシュを避けようとしていたので、私はinitのアクションを保持しています)。

プログラムがランダムにCCSchedulerにこのラインにクラッシュ:

[elt->currentTimer release]; 

エラーメッセージは、私が割り当て解除インスタンスにメッセージを送信していますということです。しかし、私はいつ割り振り解除されるのか分かりません。私は私が作成するすべての行動を保持します。私は、それが原因であったかどうかを確認するために、アクションをリリースせずにプログラムを実行しようとしても、それでもクラッシュします。

場合によっては20分後にクラッシュし、2分後にクラッシュすることがあります。それはかなりランダムです。 コードがかなり広がっているので、何をすべきか分かりません。

基本的には、実行中のCCActionを含む「戦略」オブジェクトを含むスプライトがあります。実行時に私は "戦略"を作成し、それを戦略を保持するスプライトに渡します。

スプライトは、プログラムの実行が終了するまで割り当て解除されません。

私はどのように割り当てが解除されているのか、どこで、なぜですか?私は本当にそれを理解することはできません。どんな情報をここに置くべきかわからない。 :C

+0

エラーを特定するためにコードを投稿してください。しかし明らかに、タイマーはあなたが 'release'を呼び出す前にすでにリリースされています – Raptor

+0

あなたはそれが問題であるかどうか確認するために保持カウントをチェックすることができます。 – Setrio

+0

cocos2dはスレッドセーフではないと思われるので、複数のスレッドからapiにアクセスすべきではありません。私はデザインを変更する必要があると思う。 –

答えて

0

現在、Cocos2dはスレッドセーフではなく、apiは他のスレッドから呼び出されることは想定されていません。

関連する問題