Tenga en cuenta que el mecanismo de «propiedad» de las clases de lista es simple y obtendrá un error si libera la instancia por otros medios, mientras que también está incluida en una lista. Utilice el método Extraer para eliminar algo de una lista sin losmejoresdrones.net liberarlo, asumiendo así la responsabilidad de liberarlo usted mismo. En realidad, eso es una simplificación excesiva, ya que FreeAndNil hace un truco útil y establece la variable A en nil antes de llamar al destructor en una referencia adecuada.
No asuma nada sobre la vida útil de la referencia, si fue creada por otro código. Si una clase TCar tiene un campo que apunta a alguna instancia de TWheel, es una convención que la referencia a la rueda es válida siempre que exista la referencia al automóvil, y el automóvil liberará sus ruedas dentro de su destructor. Pero eso es solo una convención, la documentación debe mencionar si hay algo más complicado.
Comunidad actual
TObjectDictionary también puede poseer las claves y / o valores del diccionario, lo que significa que se liberarán automáticamente. Tenga cuidado de poseer solo claves y / o valores si son instancias de objeto. Si establece «poseer» algún otro tipo, como un Integer, obtendrá una desagradable caída cuando se ejecute el código. Los contenedores genéricos le brindan muchos métodos útiles para agregar, eliminar, iterar, buscar, ordenar… El compilador también sabe que el contenedor contiene solo elementos del tipo apropiado. La biblioteca de lenguaje y tiempo de ejecución ofrece varios contenedores flexibles.
Esto ayuda a prevenir una cierta clase de errores; la idea es que el código «externo» nunca acceda a una instancia medio destruida de la clase. Tenga en cuenta que esto no se refiere software construccion a las excepciones planteadas. Aunque crea una clase cuando genera una excepción (y es una clase perfectamente normal, y también puede crear sus propias clases para este propósito).
Unidades
Hay una serie de clases no genéricas, también hay matrices dinámicas. Pero para obtener la mayor flexibilidad y seguridad de tipos, recomiendo oraciones-poderosass.com usar contenedores genéricos para la mayoría de sus necesidades. Una solución es, bueno, tener cuidado y leer la documentación.
- En esencia, este encasillado se ve y funciona igual que para las clases regulares.
- Tu clase necesita implementar métodos mágicos _AddRef, _Release y QueryInterface.
- Lo que se llama paquetes o módulos en otros lenguajes como Java o JavaScript, se llama unidad en Pascal.
- No hay necesidad de encasillamiento explícito en tales situaciones.
- Al proyecto aún le falta la funcionalidad Delphi, principalmente la exportación de clases soportada por el compilador desde bibliotecas compartidas (útil para, por ejemplo, Lazarus, que implementa paquetes de componentes).
- Siempre que se requiera una instancia de una clase TMyClass, siempre puede usar allí una variable que se declare con una clase de TMyClass o descendiente de TMyClass.