<?xml version="1.0" encoding="UTF-8" ?> <class name="RefCounted" inherits="Object" version="4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Base class for reference-counted objects. </brief_description> <description> Base class for any object that keeps a reference count. [Resource] and many other helper objects inherit this class. Unlike other [Object] types, [RefCounted]s keep an internal reference counter so that they are automatically released when no longer in use, and only then. [RefCounted]s therefore do not need to be freed manually with [method Object.free]. In the vast majority of use cases, instantiating and using [RefCounted]-derived types is all you need to do. The methods provided in this class are only for advanced users, and can cause issues if misused. [b]Note:[/b] In C#, reference-counted objects will not be freed instantly after they are no longer in use. Instead, garbage collection will run periodically and will free reference-counted objects that are no longer in use. This means that unused ones will linger on for a while before being removed. </description> <tutorials> <link title="When and how to avoid using nodes for everything">$DOCS_URL/tutorials/best_practices/node_alternatives.html</link> </tutorials> <methods> <method name="get_reference_count" qualifiers="const"> <return type="int" /> <description> Returns the current reference count. </description> </method> <method name="init_ref"> <return type="bool" /> <description> Initializes the internal reference counter. Use this only if you really know what you are doing. Returns whether the initialization was successful. </description> </method> <method name="reference"> <return type="bool" /> <description> Increments the internal reference counter. Use this only if you really know what you are doing. Returns [code]true[/code] if the increment was successful, [code]false[/code] otherwise. </description> </method> <method name="unreference"> <return type="bool" /> <description> Decrements the internal reference counter. Use this only if you really know what you are doing. Returns [code]true[/code] if the decrement was successful, [code]false[/code] otherwise. </description> </method> </methods> </class>