En esta entrada veremos el resumen de la conferencia principal para desarrolladores de las plataformas de Apple durante la #WWDC18
swift iOS
WWDC Developer Edition 1ª Parte
La semana hicimos una colaboración con los Podcast Sin Nombre de Andy y Lucas con una primera parte de análisis de las novedades para desarrolladores de la WWDC , lo tenéis disponibles desde ivoox a través de este enlace WWDC Developer Edition 1ª Parte.
Estamos muy contentos con esta colaboración ya que nos dejan hablar de cualquier cosa y tanto Andy como Lucas han sido muy amables. Ya tenemos ganas de seguir con esta colaboración
El análisis completo lo podéis ver desde el post de Novedades de la WWDC 2015 para desarrolladores.
Dejadnos los comentario en ivoox para que así podamos resolver dudas que puedan surgir 🙂
Y de repente llego Swift
No creo ser el único que la tecnología le apasiona y que de vez en cuando nos da agradables sorpresas en modo de renovación y ganar de mejorar. Y eso
es precisamente lo que ha pasado con Swift. Un lenguaje de nueva generación y tremendamente dinámico en su programación.
La primera sensación ha sido compararlo con Python, pero luego me vinieron tanto PHP como Javascript.
Las principales novedades de Swift respecto a Objective C son:
- Los ficheros incluyen código de implementación y definición de manera simultánea, adiós a los ficheros .h y .m ahora tienen extensión
- Variables y Constantes
- Definición de variables con var y de constantes con let.
- Tipado dinámico de variable, no es necesario indicar el tipo de la variable cuando se declara, cuando le asignas un valor cambiará automáticamente al tipo del valor.
- Aun así puedes decidir utilizar los tipos
- let doble: Double=70.0
- Fuera los ; ya no se necesitan
- No se pueden concatenar cadenas y números por ejemplo sin indicar un (Casting). Creo que esto es para mi gusto un fail, en toda regla
- let etiqueta= “texto” + (String) numero
- Conversiones a cadena directa
- let cadena = ” Cadena con (numero) variable”
- Arrays de una manera más rápida con []
- let array = [“uno”,”dos”,”tres”];
- Arrays asociativos del tirón
- let array = [“clave”:”valor”,”clave2″:”valor2″];
- Estructuras de control
- Condiciones sin paréntesis pero llaves obligatorias
- if numero == 50 { println(“es 50!”)}
- Los Switch pueden usar cualquier tipo de dato
- Los for-in se pueden usar con diccionarios
- for(clave,valor) in diccionario{}
- Uso de .. en el for in
- for i in 0..3 {}
- Funciones
- declaradas con la palabra reservada func
- func funcion (){}
- la declaración del tipo que devuelven es con ->
- func funcion () -> String {return “cadena”}
- pueden devolver más de un parámetro
- func funcion () -> (String,String){ return (“uno”,”dos”)}
- el paso de parámetros varía
- func funcion (parametro: String) {}
- Se puede parar parámetros en base a un array
- func funcion (parametros: String…){}
- funcion (“uno”,”dos”)
- Cuando se pasan los parámetros de una función no hace falta indicar el tipo del dato pasados, sólo los valores
- Se pueden anidar funciones, OMG
- Se pueden devolver funciones
- Se pueden pasar funciones como parámetros, adiós a los selectores
- Se pueden pasar bloques de código como parámetros, bienvenidos del mundo JS
- Clases
- las clases se definen con la palabra reservada class
- class MiClase {//atributos y metodos}
- Instanciación de una clase con el constructor con el mismo nombre de la clase
- var objeto = MiClase()
- Acceso a métodos con el .
- objeto.metodo()
- El constructor se sigue llamando init pero no es necesario que devuelva self
- El destructor de la clase es el método deinit
- La herencia va de una manera parecida
- class MiClase:MiPadre{}
- Podemos hacer uso de la palabra reservada override para sobre escribir un método del padre
- Podemos llamar al constructor del padre
- super.init(parametros)
- Podemos definir el getter y el setter de una propiedad directamente después de la definición de la propiedad
- var propiedad: String {get{return propiedad} set{propiedad=newValue}}
- Podemos definir métodos que se ejecuten antes o después de que una propiedad se vaya a establecer (set) con willSet o didSet de manera muy parecida al set de una propiedad
- Los métodos al ser invocados, excepto con el primer valor, deben pasarse los nombres de los parámetro antes que el valor
- objeto.metodo(“valorparametro1”, nombreparametro1: “valorsegundoparametro”)
- Se puede usar la ? cates de acceder a un metodo o instanciación si no se van a pasar todos los parámetros
- Enumeraciones
- Pueden tener asociados métodos
- Se usará la palabra reservada enum para definirlos
- enum: Enumerado: Int {// cases o métodos}
- Protocolos
- Las clases las estructuras y las enumeraciones pueden implementar protocolos
- la palabra reservada mutating permite definir métodos que cambian la estructura, deberá marcarse también la “implementación” de la estructura
- Extensiones
- La palabra reservada extension permite añadir funcionalidades a tipos existentes, similar a los catálogos
- extension Int {//nuevos métodos}
- Generics
- Son funciones o enum que permiten pasar un tipo de dato
- func funcion <Tipo>()