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
