
MÉTODOS en Swift en Español - Curso Swift | Tutorial Swift
Métodos en Swift. Los métodos son exactamente lo mismo que las funciones en Swift a nivel de sintaxis. La diferencia es que los métodos en Swift existen dentro de los Tipos.
Tabla de contenido
Los métodos son funciones que están asociados a un tipo. Las clases, structs y enums pueden definir métodos de instancia y métodos de tipo.
Métodos de instancia en Swift
Igual que ya vimos con las propiedades de instancia, tenemos exactamente lo mismo para los métodos.

Los métodos de instancia pertenecen a instancias de una clase, struct o enum. Sirven para modificar las propiedades de la instancia o para aplicar cierta lógica a la instancia. Los métodos de instancia tienen la misma sintaxis que las funciones.

Vamos a ver un ejemplo:
class Worker {
var count = 0
func increment() {
count += 1
}
func increment(by amount: Int) {
count += 1
}
func reset() {
count = 0
}
}
let worker = Worker()
worker.increment()
worker.increment()
worker.count
// El resultado de worker.count = 2
Lo que hemos hecho ha sido definir una clase, la hemos instanciado y hemos llamados a sus métodos para incrementar la propiedad de instancia.
La propiedad Self en Swift
Cada instancia de un tipo concreto tiene una propiedad implícita llamada self, lo que es equivalente a la misma instancia. En el ejemplo anterior, dentro de cada método podemos sustituir count por self.count.
class WorkerWithSelf {
var count = 0
func increment() {
self.count += 1
}
func increment(by amount: Int) {
self.count += 1
}
func reset() {
self.count = 0
}
}
En la práctica no necesitamos poner self para llamar a las propiedades de la instancia, Swift asume que no estamos refiriendo a las propiedades o métodos de instancia.
Métodos de Tipo en Swift
Igual que vimos con las propiedades, tenemos métodos de tipos. Son aquellos que podemos llamar directamente desde el tipo, sin necesidad de instanciarlo.
class WorkerWithStaticFunctions {
var count = 0
static func printMessage() {
print("Worker Type Method")
}
}
WorkerWithStaticFunctions.printMessage()