![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
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 |
|
#2
|
||||
|
||||
|
Tienen razon en la observación. De hecho Puse Get por decir cualquier otra cosa ya que como sabemos Get indica que estamos accediendo a una propiedad de un objeto. Yo creo que basta con Agregar "Create" al nombre del método y con eso será suficiente para que casi por costumbre le agreguemos el consabido try..finally que se acostumbra y liberemos la instancia.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
#3
|
||||
|
||||
|
Hola,
Sí; ahora se me ocurre "otra forma" de verlo. Resulta que si se deja claro, por medio de su identificador, que se creará un objeto en la función "X", lo cierto es que lo creas para algo, y luego de la llamada a la función "X" tú haces uso del objeto... ya esto debería dejar claro que alguien tendrá que liberar el objeto... y ese alguien será uno mismo... o una función "Y", vamos... ¡Patente, patente, aquí hay patente! Soy un genio,... ¡si es que soy un genio! Muack, muack, muack (yo, besándome a mí mismo conmigo mismo). ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|