viernes, 16 de octubre de 2015

Inicializadores en Swift

A diferencia de otros lenguajes, Swift necesita que todos las propiedades de una clase se inicialicen con un valor valido (a menos que sean opcionales). Esto se puede realizar directamente en la declaración de la propiedad o en los inicializadores de la clase.


Todas las clases y estructuras cuentan con el método implícito init, el cual deberia de implementarse para realizar cualquier tarea requerida al instanciar el objeto (como inicializar las propiedades)

Se pueden generar cuantos inicializadores con párametros adicionales se requieran, y al crear un objeto mediante el método (), se llamará al inicializador predeterminado (método init).




Cuando se desea que un inicializador haga uso de otro, es decir, que un metodo init llame internamente a otro metodo init, tendremos que apoyarnos de la palabra reservada convenience


viernes, 9 de octubre de 2015

Clases y Estructuras en Swift

Las Clases y las Estructuras son los bloques mas simples que utilizaremos para generar un programa. A diferencia de otros lenguajes como Objective-C, Swift no requiere que se generen dos archivos por construcción (el de interfaz y el de implementación)

En Swift, los objetos (que son instancias de las clases) estan mucho mas cerca de las estructuras a nivel funcional que en otras plataformas, de hecho las clases y las estructuras cuentan con varias similitudes importantes:
  • Cuentan con Propiedades
  • Cuentan con Métodos
  • Cuentan con Inicializadores
  • Pueden ser extendidas
  • Pueden ser definidas conforme a protocolos
Sin embargo, econtraremos que las clases cuentan adicionalmente con:
  • Posibilidad de heredar características
  • Posibilidad de realizar Castings
  • Desinicializadores
Otra de las principales diferencias entre las Clases y estructuras en Swift, es que las estructuras siempre serán pasadas por valor, mientras que las clases serán pasadas por referencia.

Como se menciono anteriormente, tanto las Clases como las Estructuras pueden contar con métodos, los cuales pueden ser de dos tipos, de instancia o de tipo.

Un método de instancia es aquel asociado a un objeto en particular, de tal manera que antes de llamar el método, es requerido crear una instancia de la clase o estructura:



Un método de tipo no requiere la creación de una instancia y puede ser llamado con el nombre de la clase o estructura. Se distingue por llevar la palabra reservada static o class (solo en clases):


miércoles, 7 de octubre de 2015

Variables, constantes e inferencia de tipos en Swift

En Swift utilizaremos la palabra var para definir variables y la palabra let para definir constantes.



En el caso de las colecciones var nos permitirá definir una colección mutable mientras que let nos dejara especificar una colección no mutable.




Para los que vienen de Objective-C, cada vez que piensen en un NSMutableArray, en Swift declararemos un array utilizando la palabra var. Si piensan en un NSArray, entonces estaremos utilizando la palabra reservada let. Lo mismo aplica a otras colecciones como los sets, los diccionarios, etc.

Aunque la declaración explicita de tipo sigue siendo posible, en algunos casos podremos dejar al compilador que decida cual es el mejor tipo en función de lo que estamos asignando.  Es importante mencionar que la mezcla de tipos no es soportada debido a la característica de inferencia, por lo tanto, si mezclamos varios tipos de dato (por ejemplo enteros de diferentes tamaños) nos veremos obligados a realizar las conversiones necesarias, por ejemplo:


Vamos otra vez...


Primero que nada, quiero mencionar que había estado muy ausente de este blog por múltiples motivos, pero la idea es comenzar a agregar entradas y contenido de manera regular.

Para arrancar este proyecto, vamos a comenzar con una serie de entradas dedicadas a Swift. Se que hay mucho interés en el lenguaje y, aunque hay mucho material en línea, la mayoría está en inglés y, gran parte de el, desactualizado.

Así que sean ustedes bienvenidos y esperemos que este esfuerzo les sea de utilidad. Por favor no duden en comentar y hacernos saber sus inquietudes o que temas les gustaría que abordáramos.