通常错误原因是,父节点已经被删除了。
此时如果判断父节点是否为nil,会发现父节点依然是非空。
解决方法:
addChild之前需要先用tolua.isnull(父节点)判断,如果为真则不addChild
tolua.isnull
检查指定 Lua 值中保存的 C++ 对象是否已经被删除。
我们在将 C++ 对象保存到 Lua 值后。只要还有 Lua 代码在使用这些值,那么即使 C++ 对象已经被删除了,但 Lua 值仍然会存在。如果此时调用 Lua 值的方法就会出错。
因此可以用 tolua.isnull() 检查 Lua 值中的 C++ 对象是否已经被删除。