2012-02-06 54 views
0

這個問題是關於V8 C++ API的。V8 C++ API存儲函數指針?

我想保持的全局引用一個JavaScript函數從上下文 這是存儲在本地處理功能,而不是

Local<Function> init = ... 

我想將其存儲在一個持久句柄

Persistent<Function> init = ... 

我想這樣做的正確方法是,像這樣:

Local<Function> l_init = ... 
Persistent<Function> init = currentScope.Close(l_init); 

currentScope.Close()返回本地句柄。 是否有可能將緩存作爲類成員緩存,因此我不必執行Get every frame?

我能不能有地方爲類變量,使用currentScope.Close爲它分配和釋放它,當我與處置功能做了什麼?

回答

1

如果你想將它存儲在一個持久的句柄中,你真的不需要擔心範圍。爲了討論的目的,關閉作用域將會做的主要事情是有可能將你的對象標記爲垃圾收集。

在你的榜樣,我認爲要做到以下幾點:

v8::Persistent<v8::Function> init = v8::Persistent<v8::Function>::New(l_init); 
+0

謝謝!這真的解決了問題。 – 2012-02-08 18:04:02