Protocolos en Swift - Qué Son y Como Usarlos Correctamente 2024

25/03/2023 - Actualizado: 29/11/2023

Un protocolo en Swift es comparable a un plano. Se definen métodos, propiedades y demás requerimientos como respuesta a una tarea en concreto. Este Swift puede ser adoptado tanto por una clase, como por una estructura o enumeración.

El objetivo de esto será brindar una implementación a los requerimientos. Cualquier tipo que vaya a implementar uno de estos protocolos se dice que se ajusta a ese protocolo en cuestión.

Protocolos en Swift - Qué son y como usarlos en sencillos pasos
Protocolos en Swift - Qué son y como usarlos en sencillos pasos
Índice
  1. Protocolo en Swift desde 0
    1. Ejemplo Protocolo Swift:
    2. Requerimiento de propiedad
    3. Requerimiento de métodos
    4. Requerimientos inicializadores
  2. Delegados protocolos Swift
  3. Ventajas de Swift

Protocolo en Swift desde 0

La definición de un protocolo es muy parecida a la de una clase, a una estructura o a una numeración. Esta sería la definición. Si necesitas una breve introducción a Swift más detallada te explicamos qué es Swift UI y cómo aprender a programar.

// sintaxis de un protocolo
protocol UnProtocolo {
// aquí va la definición
}

Para cualquier tipo pueda adoptar dicho protocolo, deberá de colocar el nombre del protocolo luego del nombre del tipo, ambos separados por un signo de dos puntos como parte de su definición. Si se quiere, se pueden implementar más protocolos siempre que estos se separen por una coma.

Ejemplo Protocolo Swift:

  • Lo primero es definir el protocolo Hablar. Este protocolo cuenta con el método, decirHola (nombre String)
  • Hay que definir la clase Persona que va a ser la que adopte o implemente nuestro protocolo Hablar.
  • Brindar una implementación al método decirHola (nombre: String) dentro de la clase Persona.
  • Con este método imprimiremos el texto "Hola" al que seguirá el valor que le queramos pasar a través de la propia variable de nombre que es de tipo String.
  • Crear dos variables con los nombres que quieras. Estas dos variables guardarán una referencia con el objeto persona.
  • Por último, invocar el método decirHola en ambas variables. El resultado que se reflejará a continuación será un saludo de dos líneas, una con cada nombre que hayamos establecido en el paso anterior.

Requerimiento de propiedad

Un protocolo en Swift puede que necesite un tipo que proporcione una propiedad, ya sea de instancia o de tipo. Este protocolo no especificará si es una stored property o una computed, tan solo especificará el nombre de la propiedad, así como su tipo. Este protocolo también servirá para especificar si la propiedad es gettable o gettable y settable.

protocol SomeProtocol {
var mustBeSettabgle: Int { get set }
var doesNotNeedToBeSettable: Int { get }
}

Podemos poner { get set } para indicar si la variable es gettable y settable. Independientemente de esto, las propiedades de un protocolo en Swift son siempre las Keyword var. Teniendo en cuenta esto, podemos hacer lo siguiente para las propiedades de tipo.

protocol SomeOtherProtocol {

static var someTypeProperty: Int { get set }

}

Requerimiento de métodos

Los protocolos también pueden contar con requerimientos de métodos. Estos métodos pueden ser de instancia y de tipo y ambos se escriben como las variables anteriores sin el body de la función, veamos cómo.

protocol Calculable {

    func calculate() -> String

}

struct Calculator: Calculable {

    func calculate() -> String {

        return "Some value..."

    }

}

Requerimientos inicializadores

Estos protocolos también pueden contar con protocolos inicializadores. Vamos a ver como serían estos inicializadores.

protocol Initializable {

    init(parameterOne: String, parameterTwo: Int)

}

struct User: Initializable {

    init(parameterOne: String, parameterTwo: Int) {

        // Create initializer

    }

}

Delegados protocolos Swift

Finalmente, hablemos de la delegación protocolos Swift. Esta delegación sería un patrón de diseño que se lleva a cabo en una clase o struct, delegando el trabajo de una a otra. Para lograr esta delegación los pasos serían los siguientes.

  • La Clase A delega el trabajo a la clase B
  • Después, la Clase B acaba el trabajo y lo notifica a la Clase A
  • Finalmente, la Clase A sigue haciendo su trabajo

Este patrón de delegación se utiliza habitualmente en la arquitectura MVP. Vamos a ver ahora algunas de las ventajas que supone utilizar estos protocolos en Swift y entender mejor las razones por las cuales cada vez son más los programadores que lo utilizan.

Ventajas de Swift

Utilizar Swift supone contar con una gran cantidad de ventajas. Se trata de un sistema de lo más nuevo, un lenguaje que principalmente se pensaba que iba a ser una continuación del lenguaje C pero que acabó como un lenguaje por separado. El objetivo es apoyar y desarrollar Objective-C y, desde entonces, se sigue trabajando y desarrollando para seguir sumando nuevas versiones de este.

Otra de las ventajas que tiene utilizar Swift es que es mucho más fácil de leer para los programadores. Además de esto, es capaz de compilar e inspeccionar el código con facilidad, algo que solía conseguirse en Objective-C.

Todo esto lo consigue mucho más rápido Swift es un lenguaje mucho más rápido ya que precisa con menos líneas de código. Esto hace que el programador necesite menos tiempo a la hora de crear su código, ofreciendo muchas más posibilidades.

Con esto, se implica también utilizar menos memoria. Cuando Apple implementó Swift apartó la programación que se encontraba orientada a objetos y la cambio directamente a las estructuras. A consecuencia de esto, los datos de referencia y las clases SDK se redujeron, por lo que hay un menor uso de memoria y esta se utiliza también de forma mucho más eficiente.

Finalmente, Swift es mucho más rápido que Obj-C. Esto se debe a que utiliza el compilador LLVM con lo que genera el código nativo optimizado para la plataforma en donde se está ejecutando. Por otro lado, no se encuentra limitado solo a iOS, sino que también se ha adaptado a Linux por lo que cada vez son más los programadores los que lo utilizan en Android también, aprovechándose de sus ventajas.

Eduardo García Pérez

Eduardo García Pérez

Programador y Diseñador UAX 2.0 - Experto en #Programacion #Android #IOS y #Movilidad / Licenciado en informática por la UCM y con un master en biotecnología.

Quizás te interese...

Deja una respuesta

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

1 + uno =