Maya:删除节点不会直接调用析构函数
Maya: Deleting node doesn't call destructor directly
我在Maya中创建的自定义节点有一个小问题。如果我做了这样的事情:
createNode -n "MyInstance" "MyNode";
delete "MyInstance";
它不调用类析构函数。但是,如果执行新场景、打开新文件或执行任何强制破坏当前场景的操作,则最终会调用析构函数。
问题是,我有一些内存分配,我想立即清除,而不是等到最后才真正清除。因为他们不再需要了,所以他们应该被清除。
我查看了文档,没有看到任何可以覆盖的虚拟函数,这些函数在节点实际删除或类似事件时会被调用。有这样的功能来跟踪属性之间的连接(在本例中实际使用它),但没有这样的功能用于删除。
所以,如果你们中有人有旁路的想法,或者有模拟旁路的方法,请分享!
谢谢。
W
伙计们,
终于找到了。它完全不是它应该在的地方。Autodesk有一些奇怪的做事方式。
这是:
void removeMyNode(MObject &node, void *clientData)
{
MFnDependencyNode nodeFn(node);
MGlobal::displayInfo(MString("Removal callback node: ") + nodeFn.name());
}
MDGMessage::addNodeRemovedCallback(removeMyNode, "MyNode", NULL, &status);
因此,如果删除了一个节点,则实际调用此回调。尽管如此,我还是倾向于在节点定义中通过重写函数来直接实现这一点。
感谢所有看过这个问题的人。希望这最终能帮助到你们中的一些人!
相关文章:
- 什么时候调用析构函数
- C++-明确何时以及如何调用析构函数
- C++ 防止在映射中放置()时调用析构函数
- 调用析构函数以释放动态分配的内存
- C++:使用方法调用析构函数的顺序是什么?
- 向量推回调用析构函数时调用析构函数
- 如何在调用析构函数时优雅地停止/销毁带有阻塞调用C++线程?
- C++,我应该调用析构函数吗?
- 如何获取有关在 Clang LibTooling 中调用析构函数的信息?
- 当我从 std::vector 中的新放置调用析构函数时会发生什么?
- 为什么这里不调用析构函数
- 在调用 std::bind 的产品后意外调用析构函数
- 为什么在传递给函数而不是构造函数时调用析构函数?
- 如何在C++中调用析构函数
- 为什么为未删除的对象调用析构函数?
- 调用析构函数时出错
- C++ 在不释放内存的情况下调用析构函数
- 为什么在运算符删除中不调用析构函数?
- C++ 调用析构函数后动态模板队列"double free or corruption (out)"
- 在 postOrderDelete 上调用析构函数时引发的异常