【cocos2d】CCCallFuncで予想外のリテイン発生?ハマった件
あるオブジェクトのdeallocが突然呼ばれなくなりデバッグに数時間かかってしまいました!
ノードAのCCCallFuncで別のノードBのメソッドを実行する場合、おそらくノードAはノードBをリテインするんですね。知りませんでした。
CCCallFuncはCCRepeatForeverの中で繰り返し呼ばれる設定になっていたのでおそらくずっとリテインしっぱなしになっていました。
このため、ノードBが親ノードから外れてもdealloc呼ばれなくなってしまいました。
ノードBが親から外れる前にStopAllActionsでノードAのアクションを止めてあげる事で無事問題は解決し、deallocが呼ばれるようになりました。