好的,所以我有一个使用 SWIG 向 Lua 公开的 C++ 类。该脚本创建对象,但管理器类也有一个指向该对象的指针,因此无论出于何种原因都可以在 C++(或其他脚本)中对其进行修改。
问题是当脚本完成对象被释放时,如何控制垃圾收集器收集的内容而无需实现 gc 元方法?
这是一个例子:
--Script that creates the object
someObject = Utils.Object("Obj name");
现在对象已经向管理器注册了自己,因此应用程序的其余部分(和其他脚本)可以访问它。
--Another script
obj = ObjManager:GetObject(0);
显然不是一个非常现实的例子,但希望它能说明我的问题。有没有办法在没有 C++ 中的 gc 元方法的情况下否决垃圾收集器?
只是为了澄清管理器是用 C++ 编写的,而 Utils 是包含公开类的模块名称。该对象还在其构造函数中将自己注册到管理器。
提前致谢。