cocos2d-x-3.2 cpp-tests中Bug-624.cpp求教

先上代码:


bool Bug624Layer::init()
{
    if(BugsTestBaseLayer::init())
    {
        auto size = Director::getInstance()->getWinSize();
        auto label = Label::createWithTTF("Layer1", "fonts/Marker Felt.ttf", 36.0f);

        label->setPosition(Vec2(size.width/2, size.height/2));
        addChild(label);
        
        Device::setAccelerometerEnabled(true);
        auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(Bug624Layer::onAcceleration,  this));
        _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

        schedule(schedule_selector(Bug624Layer::switchLayer), 5.0f);

        return true;
    }
    
    return false;
}

void Bug624Layer::switchLayer(float dt)
{
    unschedule(schedule_selector(Bug624Layer::switchLayer));

    auto scene = Scene::create();    
    scene->addChild(Bug624Layer2::create(), 0);
    Director::getInstance()->replaceScene(TransitionFade::create(2.0f, scene, Color3B::WHITE));
}


bool Bug624Layer2::init()
{
    if(BugsTestBaseLayer::init())
    {
        auto size = Director::getInstance()->getWinSize();
        auto label = Label::createWithTTF("Layer2", "fonts/Marker Felt.ttf", 36.0f);

        label->setPosition(Vec2(size.width/2, size.height/2));
        addChild(label);
        
        Device::setAccelerometerEnabled(true);
        auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(Bug624Layer2::onAcceleration, this));
        _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
        
        
        schedule(schedule_selector(Bug624Layer2::switchLayer), 5.0f);

        return true;
    }

    return false;
}

void Bug624Layer2::switchLayer(float dt)
{
    unschedule(schedule_selector(Bug624Layer::switchLayer));

    auto scene = Scene::create();
    scene->addChild(Bug624Layer::create(), 0);
    Director::getInstance()->replaceScene(TransitionFade::create(2.0f, scene, Color3B::RED));
}

Bug624Layer::switchLayer()中是unschedule(schedule_selector(Bug624Layer::switchLayer));

为什么Bug624Layer2::switchLayer(float dt)中也是unschedule(schedule_selector(Bug624Layer::switchLayer));呢?Bug624Layer2::init()中是schedule(schedule_selector(Bug624Layer2::switchLayer), 5.0f);的,这对应不上呀。

虽然运行时都是正确的,但是为什么会这样呢,我把Bug624Layer2::switchLayer()改成"unschedule(schedule_selector(Bug624Layer2::switchLayer));"也是运行正确,到底怎样才是最正确的呢?