Как сказал Николь, как только переменная получает ссылку на ваш объект, сам объект не может управлять этой переменной (т. Е. Установить ее значение на nil ). На самом деле, это хорошая вещь - представьте, что кто-то где-то сохранил ссылку на ваш объект в локальной переменной. Внезапно в неизвестный момент он становится ссылкой nil (потому что он где-то уничтожен), и любой дальнейший доступ к нему приводит к ошибке.
Это облом, мне нужно немедленно уничтожить объект.
Вам действительно нужно уничтожить объект? Зачем? Правильно ли работает сборщик мусора Lua? Разве нет другого способа спроектировать отношения между объектами?
Например, в простейшем случае вы можете форсировать сборку мусора через collectgarbage("collect")
. Сборка мусора очистит все объекты, на которые нет ссылок strong . Если вы действительно хотите, чтобы переменные исчезали, храните их в слабой таблице . Конечно, Lua будет выполнять сборку мусора автоматически, пока вы распределяете объекты (если вы не остановите это). Вы также можете изменить скорость сборки мусора .