読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【cocos2d】CCCallFuncで予想外のリテイン発生?ハマった件

cocos2d

あるオブジェクトのdeallocが突然呼ばれなくなりデバッグに数時間かかってしまいました!

ノードAのCCCallFuncで別のノードBのメソッドを実行する場合、おそらくノードAはノードBをリテインするんですね。知りませんでした。
CCCallFuncはCCRepeatForeverの中で繰り返し呼ばれる設定になっていたのでおそらくずっとリテインしっぱなしになっていました。
このため、ノードBが親ノードから外れてもdealloc呼ばれなくなってしまいました。
ノードBが親から外れる前にStopAllActionsでノードAのアクションを止めてあげる事で無事問題は解決し、deallocが呼ばれるようになりました。