RefCounted

Наследует: Object

Наследуется от: 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, 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, RDAttachmentFormat, RDFramebufferPass, RDPipelineColorBlendState, RDPipelineColorBlendStateAttachment, RDPipelineDepthStencilState, RDPipelineMultisampleState, RDPipelineRasterizationState, 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

Базовый класс для объектов с подсчетом ссылок.

Описание

Базовый класс для любого объекта, который хранит счетчик ссылок. Resource и многие другие вспомогательные объекты наследуют этот класс.

В отличие от других типов Object, RefCounted сохраняют внутренний счетчик ссылок, чтобы они автоматически освобождались, когда больше не используются, и только тогда. Поэтому RefCounted не нужно освобождать вручную с помощью Object.free().

Экземпляры RefCounted, пойманные в циклической ссылке, не будут освобождены автоматически. Например, если узел содержит ссылку на экземпляр A, который напрямую или косвенно содержит ссылку на A, счетчик ссылок A будет равен 2. Уничтожение узла оставит A висящим со счетчиком ссылок 1, и произойдет утечка памяти. Чтобы предотвратить это, одну из ссылок в цикле можно сделать слабой с помощью @GlobalScope.weakref().

В подавляющем большинстве случаев использования создание экземпляра и использование производных от RefCounted типов — это все, что вам нужно сделать. Методы, предоставленные в этом классе, предназначены только для продвинутых пользователей и могут вызывать проблемы при неправильном использовании.

Примечание: В C# объекты с подсчетом ссылок не будут освобождаться мгновенно после того, как они больше не используются. Вместо этого сборка мусора будет запускаться периодически и освобождать объекты с подсчетом ссылок, которые больше не используются. Это означает, что неиспользуемые объекты будут оставаться в памяти некоторое время, прежде чем будут удалены.

Обучающие материалы

Методы

int

get_reference_count() const

bool

init_ref()

bool

reference()

bool

unreference()


Описания метода

int get_reference_count() const 🔗

Возвращает текущее количество ссылок.


bool init_ref() 🔗

Инициализирует внутренний счетчик ссылок. Используйте это только если вы действительно знаете, что делаете.

Возвращает, была ли инициализация успешной.


bool reference() 🔗

Увеличивает внутренний счетчик ссылок. Используйте это только если вы действительно знаете, что делаете.

Возвращает true, если приращение прошло успешно, false в противном случае.


bool unreference() 🔗

Уменьшает внутренний счетчик ссылок. Используйте это, только если вы действительно знаете, что делаете.

Возвращает true, если объект должен быть освобожден после уменьшения, false в противном случае.