cocos源码求教

在阅读CCSeheduler.cpp代码时,遇到了一些疑问
基于cocos2dx_3.14.1版本

void Scheduler::schedulePerFrame(const ccSchedulerFunc& callback, void *target, int priority, bool paused)
{
    tHashUpdateEntry *hashElement = nullptr;
    HASH_FIND_PTR(_hashForUpdates, &target, hashElement);
	//这里如果找到了元素,怎么判断是否为 callback 呢
    if (hashElement)
    {
        // 改变优先级: 首先需要 unschedule 它
        if (hashElement->entry->priority != priority)
        {
            unscheduleUpdate(target);
        }
        else
        {
            // 不要再次添加它
            CCLOG("warning: don't update it again");
            return;
        }
    }
...
}

这里 HASH_FIND_PTR(_hashForUpdates, &target, hashElement);在快速访问入口表中寻找是否存在对应的target,如果存在,那么将元素放入 hashElement中。
再然后就判断hashElement是否为nullptr了。不是,表明该target对应的元素存在,从而判断出该callback已经添加到表中。
感觉这里有些问题啊,如果在列表中添加多个callback到该target上,那么在_hashForUpdates中体现不出来啊,因为此时target相同,在添加的时候报错的。不知我的理解对不对啊,请大大指点。

不允许有多个callback哦。

同一个target上不能有多个callback?学的时候好像没看到有不能有多个callback啊

这个是每帧回调的callback,你说的可能是别的类型的callback。

你可以把多个callback合成一个