Espacio de tecnologia, software libre y sus derivados. Una horda de monos entrenados escriben de vez en cuando por aqui algunas noticias, opiniones e incluso alguna que otra cosa fuera del tema. Maqueros, favor de abstenerse que no somos lo suficientemente guapos.

Piano daemon

Archive for Mac

Codificacion llave-Valor Objetive C

La Codificacion llave valor en objetive C… permite setear propiedades de la instancia de una clase.

screen-shot-2012-01-16-at-44311-pm.png

screen-shot-2012-01-16-at-43641-pm.png

Podemos notar que la clase anterior tiene 2 propiedades “name” y “age”… Veamos como asignarle un valor a la propiedad “name” utilizando la codificacion llave-valor.

screen-shot-2012-01-16-at-43942-pm.png

screen-shot-2012-01-16-at-44056-pm.png

Si quisieramos consultar el valor asignado, bastaria con agregar la siguiente linea a nuestro codigo.. para imprimir a consola.

screen-shot-2012-01-16-at-44206-pm.png

Podemos hacer lo mismo con la propiedad age… Solo que ojo… el metodo setValue nos obliga a solo pasarle objetos… por lo que envolveremos el integer primitivo en una clase NSNumber ..

screen-shot-2012-01-16-at-44437-pm.png

screen-shot-2012-01-16-at-44600-pm.png

Usando la Clase NSData en Objetive C

Basicamente lo que hace la clase NSData es guardar los contenidos de un objeto en un archivo

En el siguiente ejemplo se guarda todo el contenido del array del tipo NSArray en un archivo de texto.

Y en las 3 antepenultimas lineas se realiza el proceso analogamente inverso , de obtener el array del archivo donde se deposito.

screen-shot-2012-01-14-at-74024-pm.png

Esta es la salida una vez recobrado el contenido del arreglo desde el archivo ..

screen-shot-2012-01-14-at-74625-pm.png

Implementando el Protocolo NSCoding

Un Vistazo

El protocolo NSCoding: Declara los dos metodos que una clase debera implementar, para que sus instancias puedan ser codificas o decodificadas (esto es algo parecido a la serializacion y deserializacion en java pero aplicado a c objetivo). Esto provee la base de guardar objetos y su muy peculiar contexto por instancia sobre algun dispositivo del almacenamiento (discos..usb card , bases de datos..etc).

ic167979.gif


Un ejemplo lo ilustra todo!

1.- Primero creamos la Clase Rectangle y definimos sus elementos

screen-shot-2012-01-14-at-70913-pm.png

screen-shot-2012-01-14-at-71356-pm.png

2.- Ahora le aplicamos a la definicion de clase el protocolo NSCoding

screen-shot-2012-01-14-at-71048-pm.png

3.- Y agregamos los siguientes dos metodos a la implementacion de la clase Rectangle…

La KEY sirve para localizar el elemento que se serializa…
En este caso se serializan dos integer y cada uno es localizable por su KEY

screen-shot-2012-01-14-at-71645-pm.png

Aqui vemos como son deserializados los dos elementos mediantes sus KEYS

screen-shot-2012-01-14-at-71854-pm.png

4.- Ahora procedemos a ( serializar ) codificar en bytes nuestra instancia de Rectangle…

screen-shot-2012-01-14-at-72114-pm.png

Este sera el contenido de “data”

screen-shot-2012-01-14-at-72345-pm.png

5.- Ahora ejecutemos el proceso inverso .. la ( deserializacion ) decodificacion de data… para convertir su contenido en variables con contexto.

screen-shot-2012-01-14-at-72707-pm.png

screen-shot-2012-01-14-at-72941-pm.png

Categorias en Objetive C

Las Categorias permiten agregar funciones a Clases ya definidas…

Observece que en la clase NSString .. esta clase manda a llamar el metodo isAMovie … este no es un metodo de NSString.
Como puede ser eso posible… Eso es posible gracias a las Categorias de Objetive C

screen-shot-2012-01-14-at-62630-pm.png

screen-shot-2012-01-14-at-63227-pm.png


Como crear una categoria ?

screen-shot-2012-01-14-at-64134-pm.png

Notece que la implementacion de la categoria tendra acceso a todos los metodos de la clase NSString..

screen-shot-2012-01-14-at-63946-pm.png

Listo eso es todo lo que hay que hacer para extender una clase mediante categorias.

Protocolos en Objective-C

1. - Primero se define la clase

screen-shot-2012-01-14-at-52401-pm.png

2. - Despues se escribe la implementacion de la misma

screen-shot-2012-01-14-at-52738-pm.png

3.- Ahora definimos un protocolo al que llamaremos Logging

screen-shot-2012-01-14-at-52856-pm.png

4.- Ahora regresamos a la definicion de la clase e indicamos que cuando se hagan implementaciones de la misma, se bera cumplir el protocolo Logging

screen-shot-2012-01-14-at-52948-pm.png

5.- Ahora aqui implementamos los metodos que dicta el protocolo logging sobre nuestra implementacion de la Clase Dog

screen-shot-2012-01-14-at-53149-pm.png

6.- Finalmente compilamos y corremos

screen-shot-2012-01-14-at-53301-pm.png

screen-shot-2012-01-14-at-53402-pm.png

Uso de las Listas de Propiedades las famosas “.plist” en Objetive C

screen-shot-2012-01-14-at-40246-pm.png

Basicamente este sera el contenido del fichero que hemos generado en raiz /

screen-shot-2012-01-14-at-40605-pm.png

Aunque agregando las siguientes lineas a nuestra aplicacion de ejemplo… podemos realizar el flujo en sentido contrarios….
Si asi es … convertir el plist en datos instanciados en nuestra app e imprimirlos.

screen-shot-2012-01-14-at-40911-pm.png

screen-shot-2012-01-14-at-41111-pm.png

Uso de Bloques en Objetive C

screen-shot-2012-01-14-at-33843-pm.png

Al correr el anterior ejemplo tendremos como resultado 12 y 30…

Los bloques tienen un tipo de retorno y ademas aceptan parametros como una funcion (en caso de no pasarle parametros se pondra utilizara la palabra reservada void).

Ademas de esto el bloque de codigo utiliza a la variables que estan fuera del bloque (pero dentro de la funcion)…. como si se tratacen de variables globales…

Ahora un bloque que recibe parametros…

screen-shot-2012-01-14-at-34755-pm.png

El uso de NSNumber en Objetive C

El Siguiente codigo fallara…

screen-shot-2012-01-13-at-71829-pm.png

Observemos lo que sucede al ejecutarlo

screen-shot-2012-01-13-at-72008-pm.png

Para que lo anterior no nos truene tendremos que envolver al integer en una clase NSNumber.. Ya que NSMutableArray esta diseƱado prar objetos… y no para tipos de datos primitivos

screen-shot-2012-01-13-at-72302-pm.png

Observemos que ahora la cosa funciona

screen-shot-2012-01-13-at-72450-pm.png

NSMutableString … La manera de concatenar cadenas y modificarlas en objetive C

screen-shot-2012-01-13-at-65953-pm.png

Ahora ejecutemos el anterior codigo… notese que agregue un NSLog mas… abajo de “super green”

screen-shot-2012-01-13-at-70155-pm.png

Aqui podemos notar tambien como se eliminan un conjunto de caracteres de la cadena y como se insertan otros en cierta posicion..

screen-shot-2012-01-13-at-70522-pm.png

screen-shot-2012-01-13-at-70710-pm.png

Los Arreglos NSMutableArray en objetive C

screen-shot-2012-01-13-at-64803-pm.png

A diferencia de los NSArray… a estos se les pueden agregar y objetos al gusto…

« Entradas anteriores