Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

RefCounted

Hérite de : Object

Hérité par : AESContext, AStar2D, AStar3D, AStarGrid2D, AudioEffectInstance, AudioSample, AudioSamplePlayback, AudioStreamPlayback, CameraFeed, CharFXTransform, ConfigFile, Crypto, DirAccess, DTLSServer, EditorContextMenuPlugin, EditorDebuggerPlugin, EditorDebuggerSession, EditorExportPlatform, EditorExportPlugin, EditorExportPreset, EditorFeatureProfile, EditorFileSystemImportFormatSupportQuery, EditorInspectorPlugin, EditorResourceConversionPlugin, EditorResourcePreviewGenerator, EditorResourceTooltipPlugin, EditorSceneFormatImporter, EditorScenePostImport, EditorScenePostImportPlugin, EditorScript, EditorTranslationParserPlugin, EncodedObjectAsID, ENetConnection, EngineProfiler, Expression, FileAccess, GDScriptTextDocument, GDScriptWorkspace, GLTFObjectModelProperty, HashingContext, HMACContext, HTTPClient, ImageFormatLoader, JavaClass, JavaObject, JavaScriptObject, KinematicCollision2D, KinematicCollision3D, Lightmapper, Logger, MeshConvexDecompositionSettings, MeshDataTool, MultiplayerAPI, Mutex, NavigationPathQueryParameters2D, NavigationPathQueryParameters3D, NavigationPathQueryResult2D, NavigationPathQueryResult3D, Node3DGizmo, OggPacketSequencePlayback, OpenXRAPIExtension, OpenXRFutureResult, OpenXRSpatialCapabilityConfigurationBaseHeader, OpenXRSpatialComponentData, OpenXRStructureBase, PackedDataContainerRef, PacketPeer, PCKPacker, PhysicsPointQueryParameters2D, PhysicsPointQueryParameters3D, PhysicsRayQueryParameters2D, PhysicsRayQueryParameters3D, PhysicsShapeQueryParameters2D, PhysicsShapeQueryParameters3D, PhysicsTestMotionParameters2D, PhysicsTestMotionParameters3D, PhysicsTestMotionResult2D, PhysicsTestMotionResult3D, RandomNumberGenerator, RDAccelerationStructureGeometry, RDAccelerationStructureInstance, RDAttachmentFormat, RDFramebufferPass, RDHitGroup, RDPipelineColorBlendState, RDPipelineColorBlendStateAttachment, RDPipelineDepthStencilState, RDPipelineMultisampleState, RDPipelineRasterizationState, RDPipelineShader, RDPipelineSpecializationConstant, RDSamplerState, RDShaderSource, RDTextureFormat, RDTextureView, RDUniform, RDVertexAttribute, RegEx, RegExMatch, RenderSceneBuffers, RenderSceneBuffersConfiguration, Resource, ResourceFormatLoader, ResourceFormatSaver, ResourceImporter, SceneState, SceneTreeTimer, ScriptBacktrace, Semaphore, SkinReference, SocketServer, StreamPeer, SurfaceTool, TextLine, TextParagraph, TextServer, Thread, TLSOptions, TranslationDomain, TriangleMesh, Tween, Tweener, UDPServer, UPNP, UPNPDevice, WeakRef, WebRTCPeerConnection, XMLParser, XRInterface, XRPose, XRTracker, ZIPPacker, ZIPReader

Classe de base pour les objets avec références comptées.

Description

Classe de base pour tout objet qui conserve un compte de références. Resource et beaucoup d'autres objets d'aide héritent de cette classe.

Contrairement aux autres types Object, les RefCounteds conservent un compteur de référence interne afin qu'ils soient automatiquement libérés lorsqu'ils ne sont plus utilisés, et seulement là. Les RefCounteds n'ont donc pas besoin d'être libérés manuellement avec Object.free().

Les instances RefCounted prises dans une référence cyclique ne seront pas automatiquement libérées. Par exemple, si un nœud contient une référence à une instance A, qui contient directement ou indirectement une référence à A, le compte de références de A sera de 2. La destruction du nœud laissera A avec un compteur de références de 1, et il y aura une fuite de mémoire. Pour éviter cela, l'une des références du cycle peut être rendue faible avec @GlobalScope.weakref().

Dans la grande majorité des cas d'utilisation, l'instanciation et l'utilisation de types dérivés de RefCounted est tout ce que vous devez faire. Les méthodes fournies dans cette classe ne sont que pour les utilisateurs avancés, et peuvent causer des problèmes si mal utilisées.

Note : En C#, les objets avec un compteur de références ne seront pas libérés instantanément après qu'ils ne soient plus utilisés. Au lieu de cela, le ramasse-miette s'exécutera périodiquement et libérera les objets référencés qui ne sont plus utilisés. Cela signifie que les objets non utilisés resteront en mémoire pendant un certain temps avant d'être supprimées.

Tutoriels

Méthodes

int

get_reference_count() const

bool

init_ref()

bool

reference()

bool

unreference()


Descriptions des méthodes

int get_reference_count() const 🔗

Renvoie le compte de références actuel.


bool init_ref() 🔗

Initialise le compteur de références interne. Utilisez ceci seulement si vous savez vraiment ce que vous faites.

Renvoie si l'initialisation a été réussie.


bool reference() 🔗

Incrémente le compteur de références interne. Utilisez ceci seulement si vous savez vraiment ce que vous faites.

Renvoie true si l'incrémentation a réussi, false sinon.


bool unreference() 🔗

Décrémente le compteur de références interne. Utilisez ceci seulement si vous savez vraiment ce que vous faites.

Renvoie true si l'objet devrait être libéré après la décrémentation, false sinon.