2011-02-01 25 views
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; 
} 

要我打電話AS3_ReleaseobjDestByteArrayresult變量?

回答

1

所有獨特的AS3_Val變量需要最終發佈。對於AS3_Val返回變量,該函數本身不釋放該值,而是假定其調用者將安排該值的最終版本。

因此在您的示例中,版本objDestByteArray但尚未發佈result。無論誰致電makeThumbnail負責釋放其返回值。

+0

感謝您的回答!你能解釋一下關於`result`變量嗎?這個對象將返回到ActionScript代碼,我們沒有方法釋放對象,因爲GC會自動處理所有引用。所以我應該希望GC最終清理這個對象? – 2011-02-01 20:28:34