Clases en Swift: reference semantics, herencia y deinit

Marcar una clase o un método con final impide que se subclasifique o se sobreescriba. El compilador puede optimizarlo mediante dispatch estático:

final class TokenCache {
    private var cache: [String: String] = [:]
    func store(_ token: String, forKey key: String) { cache[key] = token }
    func retrieve(forKey key: String) -> String? { cache[key] }
}

deinit: limpiar recursos con ARC

class ConexionBD {
    let host: String
    init(host: String) {
        self.host = host
        print("Conectado a (host)")
    }
    deinit {
        print("Desconectado de (host)")
    }
}

do {
    let db = ConexionBD(host: "localhost")
    // uso de db
}  // deinit se llama aqui cuando ARC libera la instancia

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP