folgendes Beispiel:Luabridge schwacher Verweis auf LuaRef Daten
function Process()
local Container=NewContainer()
Container:On(EventType.Add,function()
Container:DoSomething()
end)
-- Does not Garbage Collect
end
In luabridge, speichere ich die function()
als LuaRef
, die für die Container
die Lebensdauer verlängert und es wird nicht GCed sein, weil es eine ist RefCountedObjectPtr
ist eine Abhilfe, die ich benutze eine schwache Tabelle zu verwenden, die funktioniert, aber es sieht hässlich aus:
function Process()
local Container=NewContainer()
local ParamsTable={ Container=Container }
setmetatable(ParamsTable, { __mode = 'k' })
Container:On(EventType.Add,function()
ParamsTable.Container:DoSomething()
end)
-- Garbage Collects fine
end
Gibt es eine Möglichkeit, eine LuaRef
zu haben, die ähnlich funktioniert? Oder vielleicht gibt es eine andere Problemumgehung? Hier
wenn Sie Ihre eigene Antwort akzeptieren, werden Sie weniger Menschen auf Ihre Frage suchen bekommen. Sie können es später noch akzeptieren. –