Cocos2d-x 2.2.2 Schedule and Actions problems with CCLayer

I have a very strange problem.
When I create a custom class from a layer and add it to my scene, it works very well.
However, if I remove that layer, and create again, scheduling and internal actions of the layer does not work, what can be?
I cut some pieces of code to minimize the lines

Start:

Game_v2 * _Game = Game_v2::create();
_Scene->addChild(_Game); //_Scene is a CCScene

_Game->stopAllActions();
_Game->release();
_Game->removeFromParentAndCleanup(true);

Game_v2 * _Game2 = Game_v2::create();
_Scene->addChild(_Game2);

Game_v2.h

#ifndef __Game_v2_H__
#define __Game_v2_H__

#include "cocos2d.h"

USING_NS_CC;

class Game_v2
: public CCLayer
{
public:
    CREATE_FUNC(Game_v2);
    virtual bool init();

    void repositionSprite(float dt);
    
    CCSprite * _Player;
    CCTMXTiledMap * _TiledMap;

    void StartMapa();
};

Game_v2.cpp

bool Game_v2::init() {
    if (!CCLayer::init())
        return false;

    StartMapa();
    return true;
}

void Game_v2::StartMapa()
{
    _TiledMap = CCTMXTiledMap::create("TileMaps/Level_1.tmx");
    addChild(_TiledMap, 10);
    
    _TMXLayer_Objetos = _TiledMap->layerNamed("Objetos");
    _TMXObjectGroup_Aliases = _TiledMap->objectGroupNamed("Aliases");
    
    CCDictionary * Objeto_Player = _TMXObjectGroup_Aliases->objectNamed("Player");
    CCPoint TilePos = Reis_Utilidades::Util()->Posicao_para_Tile(Objeto_Player->valueForKey("x")->intValue(),
                                                                 Objeto_Player->valueForKey("y")->intValue(),
                                                                 _TiledMap);

    _Player = _TMXLayer_Objetos->tileAt( TilePos );
    _Player->setUserData((void *) 3); 
    _Player->retain();

    schedule( schedule_selector(Game_v2::repositionSprite) );

    CCFollow * follow = CCFollow::create(_Player, _TiledMap->boundingBox());
    runAction(follow);
}

void Game_v2::repositionSprite(float dt)
{
    CCLOG("Game_v2::repositionSprite running");
    
    CCArray * allKeys = _Controlador->allKeys();
    CCObject * obj;
    CCARRAY_FOREACH(allKeys, obj)
    {
        CCString * key = (CCString*)obj;
        CCSprite * Temp_Sprite = (CCSprite*)_Controlador->objectForKey(key->getCString());
        
        if (Temp_Sprite) {
            // tile height is 64x32
            CCPoint p = Temp_Sprite->getPosition();
            p = CC_POINT_POINTS_TO_PIXELS(p);
            //_TiledMap->getTileSize().width
            //float newZ = -(p.y+32) / 16;
            float newZ = -(p.y + _TiledMap->getTileSize().height) / (_TiledMap->getTileSize().height/2);
            Temp_Sprite->setVertexZ( newZ );
        }
    }
}