Juan Cruz MDQ

Anotaciones de un programador

Proyecto objc-generator es un emprendimiento personal que surge por la necesidad de simplificar y agilizar algunas de las tareas más repetitivas (y frustrantes ) con las que me encontré al momento de trabajar desarrollando en iOS.

1) La primera de estas tareas es la definición de las propiedades para referenciar los objetos definidos en un archivo xib. Por ejemplo el hecho de agregar una simple etiqueta implica la definición del atributo y la propiedad en el header del controlador de la vista, la instrucción @synthesize en el cuerpo de la clase, y la llamada al metodo release para la liberación de memoria. Estas líneas de código se tienen que escribir para cada uno de los objetos que incluyamos en nuestra vista, ya que xCode no provee ningún mecanismo.

2) El segundo obstáculo con el que me topé surge al momento de internacionalizar los objetos de la interface de usuario. Las dos soluciones clásicas son:

  • Definir un archivo xib por cada uno de los lenguajes a los que se desee traducir: Si bien es uno de los métodos más flexibles ya que cada vista se puede personalizar para cada uno de los lenguajes, el costo de mantener la interface se multiplica por cada traducción que incluyamos en el proyecto
  • Definir una propiedad para acceder a los objetos de la interface, y setear los textos traducidos utilizando los diccionarios de internacionalización. Este método presentaría dos desventajas, por un lado, la planteada en el punto 1 ( Generar gran cantidad de código para definir las propiedades de la vista ) y la pérdida de la flexibilidad en la interface para redefinir su diseño cuando las diferencias en el lenguaje lo requiera.

continua leyendo…

Este post surgió con la idea de mostrar y comparar dos alternativas que nos provee objetive-c al momento de generar un modelo desacoplado. Si bien existen muchas otras estrategias y patrones de diseño que nos pueden ayudar en esto, elegí estos dos, ya que, por un lado el patrón delegado es ampliamente usado en Cocoa Touch, por otra parte, el uso de notificaciones nos da una gran flexibilidad para modificar la comunicación entre los componentes de nuestra aplicación.

continua leyendo…

Singleton
Patron creacional

Proposito
El propósito de este patrón es garantizar la creación de una única instancia de una clase, y proveer un punto de acceso a ella.

Motivacion
En muchos casos es necesario que exista una única instancia de una clase. ejemplo de esto son:
* Una clase que provea acceso a variables de configuración.
* Centralizar la coneccion a una base de datos a trabes de un controlador
* Manejo de una cola de impresión

Posibles soluciones
La primer solución que surge es tener una variable global a la que podemos acceder desde cualquier punto de nuestro sistema. Si bien esto garantiza el acceso a una instancia común, no limita la posibilidad de crear múltiples instancias de la misma clase.
Otra posible solución es crear una clase que solo posea métodos y variables estáticas. Sin embargo esto puede dificultar los cambios en el diseño, y limitar la herencia de la clase y polimorfo de métodos.
Una solución mejor es hacer a la misma clase la responsable de garantizar la creación de una única instancia, y que esta clase sea la que nos provea un modo de acceder a esa instancia.

continua leyendo…

En estos días me topé con un pequeño inconveniente, lamentablemente el tiempo que me llevó resolverlo no fue tan pequeño.
Hace un par de meses participe en el desarrollo de una aplicación para iPhone. Esta aplicación contaba con la posibilidad de configurar el idioma desde la misma, independientemente de la configuración del dispositivo. Originalmente pude implementar esta funcionalidad en forma muy simple escribiendo la siguiente linea de código:

  1. [[NSUserDefaults standardUserDefaults] setObject:
  2. [NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];

Luego de esto era necesario reiniciar la aplicación, y listo!  ya cargaba los archivos localizables en el idioma deseado. Pero no todo era color de rosas….hace unos días se decidió actualizarla para hacerla compatible con la nueva versión del sistema operativo de iPhone-IOS4
continua leyendo…

Si sos un escritor independiente, deseas dar a conocer y compartir tus trabajos (y de de paso ganar un dinero extra), iBookStore es la respuesta. Apple decidió habilitar su tienda a todas aquellas personas, independientes o aficionados, que disfruten de la escritura pero no cuentan con los recursos necesarios para publicar su obra.

continua leyendo…