AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / POO (Programación Orientada a Objetos)
  • Presentación
  • Referencias bajas y referencias fuertes
  • Ejemplo de referencias
  • Fuerte reference
  • Referencia débil
  • Destructor forzado
  • Equivalencia
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Gestión avanzada de instancias de clase
Presentación
La gestión avanzada de instancias se utiliza para elegir el modo de tomar reference. Esta elección tiene un impacto directo en la liberación de los objetos de clase: dependiendo de la toma seleccionada de reference, el "Destructor" no será llamado al mismo tiempo.
Hay dos modos disponibles para tomar reference:
  • el bajo reference.
  • el fuerte reference.
Recordatorio: Los operadores de reference están acostumbrados a que reference tenga la misma área de datos que el elemento fuente. Por ejemplo, dos variables apuntan al mismo objeto de clase. Para reference un objeto, basta con utilizar el operador <-.
Importante: En cualquier caso, la llamada al destructor puede ser forzada por la palabra clave "Delete".
Referencias bajas y referencias fuertes
Hay dos tipos disponibles para tomar reference:
  • The strong reference (by Default): En este caso, el objeto de clase sólo se liberará cuando se liberen todas las referencias de objeto.
  • The low reference: En este caso, los objetos se liberarán automáticamente según su alcance (incluso si se ha tomado un reference global sobre estos objetos). El bajo reference debe ser especificado durante la instanciación dinámica del objeto que toma reference.
    Universal Windows 10 App La gestión de las referencias bajas no está disponible.
To especificar un reference bajo, usar la siguiente sintaxis:
Reference is dynamic object Class1, weak
o:
Reference is dynamic object Class1 <weak>
Observación: La siguiente sintaxis se utiliza para forzar la toma de reference baja para todos los objetos:
ExecutionMode(ForceDestructorNonDynamicObject)
Atención: Este modo de funcionamiento es global para toda la aplicación y puede interferir con el modo de funcionamiento de los componentes.
Ejemplo de referencias

Fuerte reference

Al final de la Procedure, el objeto "MiObjeto" es not liberado (el destructor se llama not). El objeto "MyObject" se liberará cuando se libere "GlobalReference".. Por lo tanto, "MyObject" se liberará cuando se cierre la ventana.
// Global declarations of the window: dynamic instantiation of Class1 object
GlobalReference is dynamic object Class1
// Local procedure of the window
PROCÉDURE LocalWindowProcedure()

// Instantiate a Class1 object
MyObject is object Class1

// Taking strong reference on the MyObject object.
GlobalReference <- MyObject

Referencia débil

Al final de la Procedure, el objeto "MiObjeto" se libera (se llama destructor) y "Referencia Global" es set a NULL.
// Global declarations of the window: dynamic instantiation of Class1 object
GlobalReference is dynamic object Class1, weak
// Local procedure of the window
PROCÉDURE LocalWindowProcedure()

// Instantiate a Class1 object
MyObject is object Class1

// Taking low reference on the MyObject object.
GlobalReference <- MyObject
Destructor forzado
Tiene la capacidad de forzar la llamada al destructor (liberar el objeto) incluso si un fuerte reference fue tomado en este objeto.
La siguiente sintaxis se usa para forzar la llamada al destructor:
// The destructor will be called at the end of variable scope
// (even if a strong reference was taken on this object)
MyObject is object Class1, force Destructor
o:
// The destructor will be called at the end of variable scope
// (even if a strong reference was taken on this object)
MyObject is object Class1 <force Destructor>

Universal Windows 10 App Esta funcionalidad no está disponible.

Equivalencia

los siguientes códigos (ejemplo 1 y ejemplo 2) son equivalentes. En ambos casos, el objeto será liberado al final de la Procedure.
Ejemplo 1:
// Global declarations of the window
// Dynamic instantiation of a Class1 object
GlobalReference is dynamic object Class1, weak
// Local procedure of the window
PROCÉDURE LocalWindowProcedure()

// Instantiate a Class1 object
MyObject is object Class1

// Taking low reference on the MyObject object.
GlobalReference <- MyObject
Ejemplo 2:
// Global declarations of the window
// Dynamic instantiation of a Class1 object
GlobalReference is dynamic object Class1
// Local procedure of the window
PROCÉDURE LocalWindowProcedure()

// Instantiate a Class1 object
MyObject is object Class1, force Destructor

// Taking low reference on the MyObject object.
GlobalReference <- MyObject
Versión mínima requerida
  • Versión 16
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 27/05/2022

Señalar un error o enviar una sugerencia | Ayuda local