私はこのスプライトをinitメソッドに入れています
lineDrawer = [[LineDrawer alloc]initWithLineColor:ccc3(color.r, color.g, color.b)];
lineDrawer.position = ccp(0,0);
lineDrawer.anchorPoint = ccp(1,1);
[self addChild:lineDrawer];
[self addChild:head];
[lineDrawer release];
ここで何も悪いことはありませんか?addchildがオブジェクトを保持しているので、リリースできます。(自動リリースもOKです)
私がリリースを持っているとき、私は後でEXC_BAD_ACCESS(code = 1)を取得しますが。また、リリースをdeallocメソッドに移動しようとしましたが、同じエラーが発生します。
lineDrawerを参照する唯一のオブジェクトは、それが定義されているspriteobject(Player:CCSprite)であり、ゲッターがないため、別のオブジェクトからアクセスすることもできないため、これがどのように発生するかわかりません。所有者だけがそれへの参照を持っているとき、それは割り当て解除されます。
これは、CCLayerのdrawメソッド内のCC_NODE_DRAW_SETUP()行で発生します。
ヒントはありますか?これらの質問はコードがないために解決するのが常に難しいことを私は知っていますが、どのコードを表示するかを知ることは本当に難しいです。自分で解決できるとわかっていれば。インストルメントでこれをデバッグしようとしましたが、どこを見ればよいかわかりません。
更新、ゾンビを有効にしてデバッグしてみました
これはあなたに何か言いますか?これはLineDrawerクラスです。私が少し変更したのは他の誰かのクラスです。
http://pastebin.com/7Uv4GULy
http://pastebin.com/08NHeVt9
なんらかの方法で予定されているような気がします。