Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 25-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por yusnerqui
A no ser que uses interfaces, pues estas lo hacen por si sola, esto es cierto verdad???
No exactamente. Cada vez que se agrega una referencia a una interfaz (cualquier variable a la que le asignes una interfaz), el compilador agrega una llamada al método _AddRef, y cada vez que se pierde una referencia (por ejemplo, cuando una variable que tenía asignada una interfaz sale de alcance o cuando le asignas otra cosa) el compilador agrega una llamada a _Release.

Aunque semánticamente _AddRef y _Release parecen agregar una referencia y quitarla, lo cierto es que no hacen nada por sí solas, porque, de hecho no existen.

Como sabrás, una interfaz no implementa nada por si sola, sino que se limita a a definir un conjunto de métodos. Una clase puede implementar una o más interfaces, y será esa clase entonces quien realmente haga la implementación de los métodos.

La interfaz base, IInterface, declara tres métodos: QueryInterface, _AddRef y _Release.

Cuando se trabaja con interfaces, se suele derivar la clase que las implemente de TInterfacedObject, que es un objeto que implementa los métodos de IInterface, de manera que nosotros no tengamos que preocuparnos por hacerlo.

TInterfacedObject es quien realmente implementa el manejo automático de la destrucción. Para ello lleva un campo interno FRefCount, que incremente en 1 cada vez que se llama a _AddRef y lo decrementa en 1 cada vez que se llama a _Release. Cuando el método _Release deeca que _RefCount llega a cero, entonces se "suicida".

Sin embargo, puedes usar otros objetos base o implementar tú mismo _AddRef y _Release, de manera que no destrutan el objeto.

// Saludos
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Devuelven el dinero de Windows a usuario de Linux Casimiro Noteví La Taberna 1 10-11-2006 00:06:33
Acerca de objetos 3d MakinaX Gráficos 4 19-06-2006 18:56:03
Gestión de queries que devuelven resultado nulo papulo Conexión con bases de datos 7 11-04-2006 18:08:48
Objetos jfontane Varios 1 04-07-2003 15:39:04
Metodos que devuelven referencias a sí mismos shaktale OOP 8 07-06-2003 03:04:12


La franja horaria es GMT +2. Ahora son las 03:10:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi