0
C++コードでオブジェクトを作成し、ActionScriptコードで返す場合は、返す前にAS3_Releaseを呼び出す必要がありますか?例えば、私は* .ggファイル内の関数を持っている:AS3_Releaseを呼び出すとき
public function makeThumbnail(...): Object
{
AS3_Val objDestByteArray = AS3_New(ByteArray_class, no_params);
int intDestWidth;
int intDestHeight;
// ... make some calculations and set results as object properties
AS3_Val result = AS3_Object("width:IntType, height:IntType, data:AS3ValType", intDestWidth, intDestHeight, objDestByteArray);
// Do I need to call this?
//AS3_Release(objDestByteArray);
//AS3_Release(result);
return result;
}
は私がobjDestByteArray
ためAS3_Release
とresult
変数を呼び出す必要がありますか?
答えをありがとう! 'result'変数について少し説明してください。このオブジェクトは、GCがすべての参照を自動的に処理するため、オブジェクトを解放するメソッドがないactionscriptコードに返されます。だから、私は、GCがこのオブジェクトを最終的にきれいにすることを願っています。 –
@Andrey:はい。あなたの関数が参照カウントが1である 'AS3_Val'を返す場合、この値を消去するための完全な責任が呼び出し側に移ります。これにはAlchemyが関数を呼び出すコールバック関数が含まれ、戻り値のクリーンアップには責任があります。 – Gunslinger47
私はそれをリリースする 'result'を追加し、参照カウント0でそれを返すことはオプションでさえありません。 'AS3_Release'を呼び出した直後に値が消えて、戻り値が得られなくなることがあります。 – Gunslinger47