2017-09-12 22:42:36 +02:00
<?xml version="1.0" encoding="UTF-8" ?>
2023-07-06 10:08:05 +02:00
<class name= "RefCounted" inherits= "Object" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../class.xsd" >
2017-09-12 22:42:36 +02:00
<brief_description >
2019-06-26 15:57:13 +02:00
Base class for reference-counted objects.
2017-09-12 22:42:36 +02:00
</brief_description>
<description >
2019-06-26 15:57:13 +02:00
Base class for any object that keeps a reference count. [Resource] and many other helper objects inherit this class.
2021-10-08 02:16:59 +02:00
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].
2021-06-04 18:03:15 +02:00
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.
2021-10-08 02:16:59 +02:00
[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.
2017-09-12 22:42:36 +02:00
</description>
<tutorials >
2021-11-15 10:43:07 +01:00
<link title= "When and how to avoid using nodes for everything" > $DOCS_URL/tutorials/best_practices/node_alternatives.html</link>
2017-09-12 22:42:36 +02:00
</tutorials>
<methods >
2022-09-19 16:45:45 +02:00
<method name= "get_reference_count" qualifiers= "const" >
<return type= "int" />
<description >
Returns the current reference count.
</description>
</method>
2017-09-12 22:42:36 +02:00
<method name= "init_ref" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2017-09-12 22:42:36 +02:00
<description >
2019-06-26 15:57:13 +02:00
Initializes the internal reference counter. Use this only if you really know what you are doing.
Returns whether the initialization was successful.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "reference" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2017-09-12 22:42:36 +02:00
<description >
2019-06-26 15:57:13 +02:00
Increments the internal reference counter. Use this only if you really know what you are doing.
2019-06-22 01:04:47 +02:00
Returns [code]true[/code] if the increment was successful, [code]false[/code] otherwise.
2017-09-12 22:42:36 +02:00
</description>
</method>
<method name= "unreference" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2017-09-12 22:42:36 +02:00
<description >
2019-06-26 15:57:13 +02:00
Decrements the internal reference counter. Use this only if you really know what you are doing.
2023-10-11 10:27:25 +02:00
Returns [code]true[/code] if the object should be freed after the decrement, [code]false[/code] otherwise.
2017-09-12 22:42:36 +02:00
</description>
</method>
</methods>
</class>