:github_url: hide .. _class_RefCounted: RefCounted ========== **Успадковує:** :ref:`Object` **Успадковано від:** :ref:`AESContext`, :ref:`AStar2D`, :ref:`AStar3D`, :ref:`AStarGrid2D`, :ref:`AudioEffectInstance`, :ref:`AudioSample`, :ref:`AudioSamplePlayback`, :ref:`AudioStreamPlayback`, :ref:`CameraFeed`, :ref:`CharFXTransform`, :ref:`ConfigFile`, :ref:`Crypto`, :ref:`DirAccess`, :ref:`DTLSServer`, :ref:`EditorContextMenuPlugin`, :ref:`EditorDebuggerPlugin`, :ref:`EditorDebuggerSession`, :ref:`EditorExportPlatform`, :ref:`EditorExportPlugin`, :ref:`EditorExportPreset`, :ref:`EditorFeatureProfile`, :ref:`EditorFileSystemImportFormatSupportQuery`, :ref:`EditorInspectorPlugin`, :ref:`EditorResourceConversionPlugin`, :ref:`EditorResourcePreviewGenerator`, :ref:`EditorResourceTooltipPlugin`, :ref:`EditorSceneFormatImporter`, :ref:`EditorScenePostImport`, :ref:`EditorScenePostImportPlugin`, :ref:`EditorScript`, :ref:`EditorTranslationParserPlugin`, :ref:`EncodedObjectAsID`, :ref:`ENetConnection`, :ref:`EngineProfiler`, :ref:`Expression`, :ref:`FileAccess`, :ref:`GLTFObjectModelProperty`, :ref:`HashingContext`, :ref:`HMACContext`, :ref:`HTTPClient`, :ref:`ImageFormatLoader`, :ref:`JavaClass`, :ref:`JavaObject`, :ref:`JavaScriptObject`, :ref:`KinematicCollision2D`, :ref:`KinematicCollision3D`, :ref:`Lightmapper`, :ref:`Logger`, :ref:`MeshConvexDecompositionSettings`, :ref:`MeshDataTool`, :ref:`MultiplayerAPI`, :ref:`Mutex`, :ref:`NavigationPathQueryParameters2D`, :ref:`NavigationPathQueryParameters3D`, :ref:`NavigationPathQueryResult2D`, :ref:`NavigationPathQueryResult3D`, :ref:`Node3DGizmo`, :ref:`OggPacketSequencePlayback`, :ref:`OpenXRAPIExtension`, :ref:`OpenXRFutureResult`, :ref:`OpenXRSpatialCapabilityConfigurationBaseHeader`, :ref:`OpenXRSpatialComponentData`, :ref:`OpenXRStructureBase`, :ref:`PackedDataContainerRef`, :ref:`PacketPeer`, :ref:`PCKPacker`, :ref:`PhysicsPointQueryParameters2D`, :ref:`PhysicsPointQueryParameters3D`, :ref:`PhysicsRayQueryParameters2D`, :ref:`PhysicsRayQueryParameters3D`, :ref:`PhysicsShapeQueryParameters2D`, :ref:`PhysicsShapeQueryParameters3D`, :ref:`PhysicsTestMotionParameters2D`, :ref:`PhysicsTestMotionParameters3D`, :ref:`PhysicsTestMotionResult2D`, :ref:`PhysicsTestMotionResult3D`, :ref:`RandomNumberGenerator`, :ref:`RDAttachmentFormat`, :ref:`RDFramebufferPass`, :ref:`RDPipelineColorBlendState`, :ref:`RDPipelineColorBlendStateAttachment`, :ref:`RDPipelineDepthStencilState`, :ref:`RDPipelineMultisampleState`, :ref:`RDPipelineRasterizationState`, :ref:`RDPipelineSpecializationConstant`, :ref:`RDSamplerState`, :ref:`RDShaderSource`, :ref:`RDTextureFormat`, :ref:`RDTextureView`, :ref:`RDUniform`, :ref:`RDVertexAttribute`, :ref:`RegEx`, :ref:`RegExMatch`, :ref:`RenderSceneBuffers`, :ref:`RenderSceneBuffersConfiguration`, :ref:`Resource`, :ref:`ResourceFormatLoader`, :ref:`ResourceFormatSaver`, :ref:`ResourceImporter`, :ref:`SceneState`, :ref:`SceneTreeTimer`, :ref:`ScriptBacktrace`, :ref:`Semaphore`, :ref:`SkinReference`, :ref:`SocketServer`, :ref:`StreamPeer`, :ref:`SurfaceTool`, :ref:`TextLine`, :ref:`TextParagraph`, :ref:`TextServer`, :ref:`Thread`, :ref:`TLSOptions`, :ref:`TranslationDomain`, :ref:`TriangleMesh`, :ref:`Tween`, :ref:`Tweener`, :ref:`UDPServer`, :ref:`UPNP`, :ref:`UPNPDevice`, :ref:`WeakRef`, :ref:`WebRTCPeerConnection`, :ref:`XMLParser`, :ref:`XRInterface`, :ref:`XRPose`, :ref:`XRTracker`, :ref:`ZIPPacker`, :ref:`ZIPReader` Базовий клас для довідкових об'єктів. .. rst-class:: classref-introduction-group Опис -------- Базовий клас для будь-якого об'єкта, який зберігає лічильник посилань. :ref:`Resource` та багато інших допоміжних об'єктів успадковують цей клас. На відміну від інших типів :ref:`Object`, **RefCounted** зберігають внутрішній лічильник посилань, щоб вони автоматично звільнялися, коли більше не використовуються, і тільки тоді. Тому **RefCounted** не потрібно звільняти вручну за допомогою методу :ref:`Object.free()`. Екземпляри **RefCounted**, що потрапили в циклічне посилання, **не** будуть звільнятися автоматично. Наприклад, якщо вузол містить посилання на екземпляр ``A``, який прямо чи опосередковано містить посилання на ``A``, лічильник посилань ``A`` буде 2. Знищення вузла залишить ``A`` з лічильником посилань, рівним 1, і виникне витік пам'яті. Щоб запобігти цьому, одне з посилань у циклі можна зробити слабким за допомогою методу :ref:`@GlobalScope.weakref()`. У переважній більшості випадків використання достатньо створити екземпляр та використовувати типи, похідні від **RefCounted**. Методи, наведені в цьому класі, призначені лише для досвідчених користувачів і можуть спричинити проблеми, якщо їх неправильно використовувати. \ **Примітка:** У C# об'єкти з підрахунком посилань не звільняються миттєво після того, як вони більше не використовуються. Натомість періодично запускатиметься збирання сміття та звільнятиме об'єкти з підрахунком посилань, які більше не використовуються. Це означає, що невикористані об'єкти залишатимуться в пам'яті деякий час, перш ніж будуть видалені. .. rst-class:: classref-introduction-group Посібники ------------------ - :doc:`Коли і як уникнути використання вузлів для всіх <../tutorials/best_practices/node_alternatives>` .. rst-class:: classref-reftable-group Методи ------------ .. table:: :widths: auto +-------------------------+---------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_reference_count`\ (\ ) |const| | +-------------------------+---------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`init_ref`\ (\ ) | +-------------------------+---------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`reference`\ (\ ) | +-------------------------+---------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`unreference`\ (\ ) | +-------------------------+---------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Описи методів -------------------------- .. _class_RefCounted_method_get_reference_count: .. rst-class:: classref-method :ref:`int` **get_reference_count**\ (\ ) |const| :ref:`🔗` Повернення поточного рахунку. .. rst-class:: classref-item-separator ---- .. _class_RefCounted_method_init_ref: .. rst-class:: classref-method :ref:`bool` **init_ref**\ (\ ) :ref:`🔗` Навігація внутрішнього посилання. Використовуйте це лише якщо ви дійсно знаєте, що ви робите. Повертає, чи успішно пройшла ініціалізація. .. rst-class:: classref-item-separator ---- .. _class_RefCounted_method_reference: .. rst-class:: classref-method :ref:`bool` **reference**\ (\ ) :ref:`🔗` Зняття внутрішнього довідника. Використовуйте це лише якщо ви дійсно знаєте, що ви робите. Повертаємо ``true``, якщо підрив був успішним, ``false`` в іншому випадку. .. rst-class:: classref-item-separator ---- .. _class_RefCounted_method_unreference: .. rst-class:: classref-method :ref:`bool` **unreference**\ (\ ) :ref:`🔗` Відхилити внутрішній довідковий лічильник. Використовуйте це лише якщо ви дійсно знаєте, що ви робите. Повертає ``true``, якщо об'єкт повинен бути звільнений після розпаду, ``false`` інакше. .. |virtual| replace:: :abbr:`virtual (Зазвичай, цей метод перевизначається користувачем, щоб він мав вплив.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (Цей метод не має побічних ефектів. Не змінює ніяку змінну екземпляра об'єкта.)` .. |vararg| replace:: :abbr:`vararg (Цей метод приймає будь-яке число аргументів після описаних тут.)` .. |constructor| replace:: :abbr:`constructor (Цей метод використовується для побудови типів.)` .. |static| replace:: :abbr:`static (Цей метод не потребує екземпляра для виклику, його можна викликати безпосередньо за допомогою назви класу.)` .. |operator| replace:: :abbr:`operator (Цей метод описує дійсний оператор для взаємодії з цим типом як з лівим операндом.)` .. |bitfield| replace:: :abbr:`BitField (Це значення є цілим числом, складеним у вигляді бітової маски з наступних прапорів.)` .. |void| replace:: :abbr:`void (Значення не повертається.)`