From db822fbf396b83985b5ed985cf2e08d7ab374ca4 Mon Sep 17 00:00:00 2001 From: skyace65 Date: Thu, 28 Jan 2021 22:22:16 -0500 Subject: [PATCH] Add code example for weakref (cherry picked from commit 4f19eea5c9b38d0f374a5cc248832ae9ccf83445) --- .../scripting/gdscript/gdscript_basics.rst | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/getting_started/scripting/gdscript/gdscript_basics.rst b/getting_started/scripting/gdscript/gdscript_basics.rst index 0bd620f91..e0c203ef1 100644 --- a/getting_started/scripting/gdscript/gdscript_basics.rst +++ b/getting_started/scripting/gdscript/gdscript_basics.rst @@ -1337,8 +1337,22 @@ freed when no longer in use. No garbage collector exists, just reference counting. By default, all classes that don't define inheritance extend **Reference**. If this is not desired, then a class must inherit :ref:`class_Object` manually and must call ``instance.free()``. To -avoid reference cycles that can't be freed, a ``weakref`` function is -provided for creating weak references. +avoid reference cycles that can't be freed, a :ref:`class_WeakRef` function is +provided for creating weak references. Here is an example: + +:: + + extends Node + + var my_node_ref + + func _ready(): + my_node_ref = weakref(get_node("MyNode")) + + func _this_is_called_later(): + var my_node = my_node_ref.get_ref() + if my_node: + my_node.do_something() Alternatively, when not using references, the ``is_instance_valid(instance)`` can be used to check if an object has been