Как кто-то упоминает здесь, вы можете попробовать использовать слабые таблицы.
Если у вас есть такой код:
myListOfObjects = {}
...
table.insert(myListOfObject, anObject)
Затем, как только anObject
перестанет использоваться, он никогда не будет освобожден, поскольку myListOfObjects
все еще ссылается на него.
Вы можете попробовать удалить ссылку в myListOfObjects
(установив для ссылки значение nil), но более простым решением будет объявить myListOfObjects
слабой таблицей:
myListOfObjects = {}
setmetatable(myListOfObjects, { __mode = 'v' }) --myListOfObjects is now weak
Учитывая, что setmetatable
возвращает ссылку на изменяемую ею таблицу, вы можете использовать эту более короткую идиому, которая делает то же самое, что и предыдущие две строки:
myListOfObjects = setmetatable({}, {__mode = 'v' }) --creation of a weak table
person
kikito
schedule
18.12.2009