Swift: ¿desinicialización y cómo funciona?

La desinicialización es el proceso para desasignar espacio de memoria, lo que significa que cuando terminemos nuestro trabajo con cualquier memoria, eliminaremos nuestro puntero que apunta a esa memoria para que la memoria pueda usarse para otros fines. En otras palabras, es el ciclo para liberar el espacio en desuso que involucraban los objetos de caso de clase en desuso para una mejor memoria de los ejecutivos. Por lo general, solo se puede acceder a ellos con tipos de clase, por lo que podemos utilizar fácilmente desinicializadores y ordenar objetos de ocurrencia de clase no utilizados. Una clase puede tener casi un desinicializador y no toma ningún parámetro. Un proceso de desinicialización que llamó inmediatamente antes de desasignar una instancia de clase. Podemos comenzar la desinicialización con la palabra clave deinit. deinit es la palabra clave predefinida para desasignar memoria en Swift. Dentro de deinit, podemos escribir nuestro código.

Sintaxis:

deinit {

    // acción de desinicialización

}

Funcionamiento de la desinicialización

Swift libera automáticamente los recursos utilizados desasignando nuestras instancias cuando ya no son necesarias. Maneja la memoria de los ejecutivos de ocasiones a través de conteo de referencia programado o ARC (también conocido como Conteo de Referencia Automático). No tenemos que realizar ninguna limpieza manual cuando se desasignan nuestros casos. Quick, naturalmente, desasigna nuestros eventos cuando generalmente no se espera que liberen activos de memoria. Sea como sea, cuando estamos trabajando con nuestros propios activos, es posible que tengamos que realizar una limpieza adicional. En Swift, no tenemos que llamar a los desinicializadores físicamente, estos llamarán naturalmente no mucho antes de que ocurra la desasignación. Suponiendo que caracterizamos un desinicializador en una clase, puede llegar a cada una de las propiedades y puede cambiar la conducta de las propiedades.

Los desinicializadores se llaman naturalmente, no mucho antes de que ocurra la desasignación de ocasiones. Los desinicializadores de superclases son heredados por sus propias subclases y al final de la implementación del desinicializador de subclases, el desinicializador de superclases se llama automáticamente. Los desinicializadores de la superclase siempre se llaman incluso si una subclase no posee su desinicializador. Si ocurre una situación en la que el espacio no se desasigna incluso si se llama a su desinicializador, entonces el desinicializador llega a las propiedades de la ocurrencia a la que se acerca y se modifica de acuerdo con esas propiedades para desasignar la memoria.

Ejemplo 1: en el siguiente ejemplo, hemos inicializado una variable con 10, la última la incrementa en 10 durante la inicialización de la clase. Después de eso, imprimimos su valor y luego apuntamos nuestro objeto de clase a nulo y nuevamente imprimimos el valor de la variable. Cuando imprimimos por primera vez el valor de la variable, obtenemos 20 como resultado, pero después de la desinicialización, obtenemos 0 como resultado. 

Swift

// Swift program to illustrate deinitialization 
// Initialize a variable x with value 10
var x = 10
  
// Create a class
class deinitGfg 
{
  
    // Initialize
    init() 
    {
        x = x + 10
    }
      
    // Deinitialization  x to 0
    deinit 
    {
        x = 0
    }
}
  
// Created an instance of class 
var obj: deinitGfg? = deinitGfg()
  
print("Value of x before deinit = \(x)")
obj = nil
print("Value of x after deinit = \(x)")

Producción:

Value of x before deinit = 20
Value of x after deinit = 0

Ejemplo 2: En este ejemplo, hemos creado un desinicializador dentro de la clase Gfg. Luego, creamos una instancia de la clase Gfg y la asignamos a una variable de tipo Gfg llamada ob. luego asignamos nil a ob y desasignará la memoria.

Swift

// Swift program to illustrate deinitialization 
  
// Create a class
class Gfg 
{
    var x: Int
      
    // define initializer
    init() 
    {
        x = 5
        print("Memory Initialized for variable x")
    }
      
    // define deinitializer
    deinit 
    {
        print("Memory Deinitialized")
    }
}
  
// Create an instance of class
var ob: Gfg? = Gfg()
  
// Deallocate object
ob = nil

Producción:

Memory Initialized for variable x
Memory Deinitialized

Publicación traducida automáticamente

Artículo escrito por iamabhijha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *