Flash 何时调用AS3_释放
我是否应该调用Flash 何时调用AS3_释放,flash,apache-flex,alchemy,Flash,Apache Flex,Alchemy,我是否应该调用AS3\u Release以获取objdestbytarray和结果变量?最终需要释放所有唯一的AS3\u Val变量。对于AS3_Val返回变量,函数本身不释放值,而是假设其调用者将安排值的最终释放 因此,在您的示例中,发布objDestByteArray,但不要发布result。调用makeThumbnail的人负责释放其返回值。感谢您的回答!你能解释一下结果变量吗?这个对象将返回到actionscript代码中,在这里我们没有释放对象的方法,因为GC会自动处理所有引用。所以我
AS3\u Release
以获取objdestbytarray
和结果
变量?最终需要释放所有唯一的AS3\u Val
变量。对于AS3_Val
返回变量,函数本身不释放值,而是假设其调用者将安排值的最终释放
因此,在您的示例中,发布
objDestByteArray
,但不要发布result
。调用makeThumbnail
的人负责释放其返回值。感谢您的回答!你能解释一下结果变量吗?这个对象将返回到actionscript代码中,在这里我们没有释放对象的方法,因为GC会自动处理所有引用。所以我只希望GC最终会清理这个物体?@Andrey:是的。如果函数返回一个引用计数为1的AS3_Val
,则清除该值的全部责任转移给调用方。这包括回调函数,其中Alchemy调用您的函数并承担清除返回值的责任。我应该补充一点,释放result
然后返回引用计数为0的函数甚至不是一个选项。在您调用AS3\u Release
后,该值可能会立即消失,无法返回。我在炼金术论坛上问了同样的问题,但得到了一个稍微不同的答案:他们说我根本不需要发布结果。当我返回这个对象时,在C代码中没有对它的引用。我还在FlashBuilderProfiler中进行了检查,也得到了相同的结果。从C代码返回到actionscript后,objDestByteArray
仍然有来自C代码的引用,结果
没有。但无论如何,你的答案是正确的。我应该调用AS3_Release(objDestByteArray)代码>,但不应AS3_发布(结果)
@Andrey:他说return“释放”引用,这对你来说是简化了一点。我们基本上说的是同一件事。在返回值之前不要完全释放它们。