Estructuras, Protocolos y clases
ESTRUCTURAS Y CLASES DE SWIFT
A diferencia de otros lenguajes de programación, Swift no requiere la creación de archivos de interfaz e implementación independientes para estructuras y clases personalizadas. En Swift, se define una estructura o clase en un solo archivo, y la interfaz externa a dicha clase o estructura se pone automáticamente a disposición de otro código.
Comparación de estructuras y clases
Las estructuras y las clases en Swift tienen muchas cosas en común. Ambas pueden:
Definir propiedades para almacenar valores
Definir métodos para proporcionar funcionalidad
Defina subíndices para proporcionar acceso a sus valores utilizando la sintaxis de subíndices
Definir inicializadores para configurar su estado inicial
Ampliar para expandir su funcionalidad más allá de una implementación predeterminada
Cumplir con los protocolos para proporcionar una funcionalidad estándar de un cierto tipo
Para obtener más información, consulte Propiedades , Métodos , Subíndices , Inicialización , Extensiones y Protocolos .
Las clases tienen capacidades adicionales que las estructuras no tienen:
La herencia permite que una clase herede las características de otra.
La conversión de tipos le permite comprobar e interpretar el tipo de una instancia de clase en tiempo de ejecución.
Los desinicializadores permiten que una instancia de una clase libere cualquier recurso que tenga asignado.
El conteo de referencias permite más de una referencia a una instancia de clase.
Sintaxis de definición
Las estructuras y las clases tienen una sintaxis de definición similar. Se introducen las estructuras con la structpalabra clave y las clases con la classpalabra clave. Ambas colocan su definición completa entre llaves:
A continuación se muestra un ejemplo de una definición de estructura y una definición de clase:
Las estructuras y enumeraciones son tipos de valor
Un tipo de valor es un tipo cuyo valor se copia cuando se asigna a una variable o constante, o cuando se pasa a una función.
De hecho, has usado tipos de valor extensamente en los capítulos anteriores. De hecho, todos los tipos básicos de Swift (enteros, números de punto flotante, booleanos, cadenas, arrays y diccionarios) son tipos de valor y se implementan como estructuras en segundo plano.
En Swift, todas las estructuras y enumeraciones son tipos de valor. Esto significa que cualquier instancia de estructura y enumeración que crees, y cualquier tipo de valor que tengan como propiedad, siempre se copia al pasarse en tu código.
CLASES
Clase, es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto de variables o atributos -el estado, y métodos apropiados para operar con dichos datos -el comportamiento. Cada objeto creado a partir de la clase se denomina instancia de la clase,
Una Clase, es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto de variables o atributos -el estado, y métodos apropiados para operar con dichos datos el comportamiento. Cada objeto creado a partir de la clase se denomina instancia de la clase mientras los Protocolos, son plantillas de especificación que se definen para crear reglas determinadas que se deben cumplir en una implementación que se pueden usar en varias clases o structs. Definen requisitos a implementar utilizando solamente las cabeceras de las propiedades o métodos.
Los protocolos
-No obligan a la instanciación ni a la inicialización previa.
-No soportan herencia.
-Tipos de datos por valor.
CLASES de PROTOCOLOS y HERENCIAS
En Swift se utilizan mucho los protocolos, ya que en casi todas las clases del modelo de vista y controlador son utilizados. Un ejemplo común es la clase ViewController que puede estar asociada a una interface gráfica que esta de conformidad a los protocolos UITableViewDataSource y
UITableViewDelegate.
class ViewController: UIViewController, UITableViewDataSource,
UITableViewDelegate
@IBOutlet var tableView: UITableView!
var items: [String] = []
...
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{ return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath:
IndexPath) -> UITableViewCell {
@IBOutlet var tableView: UITableView!
var items: [String] = []
...
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{ return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath:
IndexPath) -> UITableViewCell {
@IBOutlet var tableView: UITableView!
var items: [String] = []
...
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{ return items.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath:
IndexPath) -> UITableViewCell {
// Fetch Item let item = items[indexPath.row]
// Dequeue Cell let cell = tableView.dequeueReusableCell(withIdentifier:
"TableViewCell", for: indexPath)
// Configure Cell
cell.textLabel?.text = item
return cell
}




Comentarios
Publicar un comentario