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.

martes, 27 de mayo de 2014

Empezando con CocoaPods

No hace mucho, un colega me hablo de lo maravilloso que le había resultado eso de CocoaPods, y de como le estaba ahorrando trabajo. Por razones varias (pero sobre todo por mi mala memoria), no tuve la oportunidad de probarlo y verificar la utilidad de los pods hasta hace poco.

Si lo catalogamos como un administrador de dependencias (tal y como en la pagina oficial lo definen) no suena tan impresionante, sin embargo, si agregamos que podemos utilizarlo para buscar bibliotecas de código, pedir que las descargue y hasta nos deje nuestro proyecto listo para utilizarlas, la cosa cambia.

Adicionalmente, encontraremos que podemos especificar si queremos algunas versión en particular de alguna biblioteca, e incluso nos permitirá mezclar bibliotecas que utilice ARC con otras que no lo hagan, etc, etc.

Para disfrutar de CocoaPods, vamos a seguir unos simples pasos:

1. Para instalar, nos vamos a una ventana de terminal y tecleamos el siguiente comando:
 $ sudo gem install cocoapods
2. Una vez concluido el paso anterior, se desplegará el aviso de instalación completada, tecleamos el siguiente comando para completar la configuración:
$ pod setup
3. Una vez que el repositorio principal esta listo, basta con que agreguemos en la carpeta raíz de nuestro proyecto un archivo llamado PodFile que contenga la definición de todas las bibliotecas a utilizar, un ejemplo de este archivo debería lucir mas o menos así:
platform :ios, '7.0'
pod 'XHScrollMenu', '~> 0.1.4'
pod 'Reachability'
Como puedes ver, la línea de color verde especifica que se trata de un proyecto para iOS (puede ser también utilizado para aplicaciones de OS X), así como la versión mínima requerida por nuestra aplicación (en este caso 7.0 en delante).

Por cada biblioteca que utilizara nuestro proyecto, necesitaremos una línea como la amarilla o la naranja. La única diferencia se encuentra en que en la línea amarilla estoy especificando que requiero la versión 0.1.4, mientras que en la línea de color naranja se obtendrá la versión mas reciente.

4. Una vez que tenemos nuestro archivo de pods, desde terminal tecleamos el siguiente comando (estando en la ruta donde se encuentra nuestro proyecto y el archivo PodFile):
$ pod install
5. Una vez concluida la instalación de las dependencias, necesitaremos abrir nuestro proyecto desde el archivo de .xcworkspace recién creado, no el del proyecto que usábamos anteriormente.

  

6. A partir de este momento solo hagan el #Import correspondiente y comiencen a utilizar las bibliotecas recién agregadas.

Para mayor información no duden en visitar el sitio oficial: www.cocoapods.org

miércoles, 30 de abril de 2014

Xcode y los Snippets

Quizás ya están muy familiarizados con esta funcionalidad del Xcode, sin embargo, después de poco mas de dos años de usar el IDE, yo recién comienzo a disfrutar de los comodísimos snippets. Si eres igual de despistado que yo, y aun no sabes como crear los tuyos, sigue leyendo.

Lo primero que debes hacer es desplegar la barra lateral derecha, esto desde el ultimo icono de la esquina superior derecha.

Luego, donde se despliegan las bibliotecas, selecciona el icono de las llaves, esto desplegara la biblioteca de snippets.

Hecho lo anterior, teclea todo el código que quieras convertir en snippet en la ventana del editor, al terminar, selecciónalo y arrástralo directamente a la biblioteca de snippets. Esto creara un nuevo llamado My code Snippet.

Da doble clic sobre el, y presiona el botón editar. Esto te permitirá cambiar el nombre, agregar una breve descripción, especificar el alcance del snippet y definir los posibles placeholders.


Los placeholders (las burbujas que serán reemplazadas en el código) se especifican de la siguiente manera: <#Placeholder#>. Al usar este snippet, podremos navegar entre los placeholder usando la tecla Tab y reemplazarlos mas rápidamente.


Una ultima cosa. Si quieres respaldar o compartir tus snippets, los puedes encontrar en la siguiente ruta: ~/Library/Developer/Xcode/UserData/CodeSnippets/

jueves, 27 de marzo de 2014

Bitbucket: Repositorio Git gratis y privado

Normalmente no suelo hacer promoción a aplicaciones, portales y demás (o al menos no directamente), sin embargo en esta ocasión voy a hacer una excepción para comentarles un poco acerca de este repositorio que recién me presentaron.

Anteriormente usé un tiempo el famosísimo GitHub, sin embargo, a pesar de que tiene un montón de cosas positivas que se puede decir de el, tiene un punto en su contra, que en mi caso, es muy grande: no ofrece posibilidad de crear repositorios privados.

Para las empresas o incluso, para proyectos personales de grandes dimensiones, no cabe duda que lo amerita, sin embargo si están tratando tener su código personal o de pequeños proyectos en la nube, ahí la cosa cambia.

Bueno, sin mas rodeos, les dejo el URL para que ustedes mismos evalúen la utilidad del sitio: https://bitbucket.org/.