第三个案例讲的是调用lua中的函数方法。核心方法就是luaState中的GetFunction()方法。该方法会先从funcMap这个字典中查找对应的方法对象,有的话,并且该方法仍然处于非游离状态(IsAlive),就会返回该方法,并且从GC列表中删除该方法。否者就会从funcMap中删除该方法对象。
否则,会通过PushLuaFunction方法获取对象。该方法同样也会先在funcMap字典中查找,这一步可以通过参数来跳过。PushLuaTable()会检测该方法的持有者是否已经存在。将方法名拆出来,获取判断该字段对象是否原本代表的是方法类型,获取一个LuaType枚举类型,然后在压堆栈,
获取方法对象的堆栈引用,先从funcRefMap字典中通过引用获取方法对象,否则,根据引用创建一个LuaFunction实例对象。设置实例对象的名字为我们需要查找的方法名,并且将其添加进funcMap和