abr 26

Quiero compartir con vosotros un par de trucos que nos ayudarán a mantener el código bien organizado y a no olvidarnos de lo que nos falta por implementar en nuestras clases. Varios editores de texto y entornos de desarrollo cuentan con directivas similares para el mismo propósito. En nuestro caso, hablo del #pragma mark y del TODO:, en Xcode.

Empezaré por explicar como se usa el TODO: en Xcode, seguramente ya sabéis para que se usa, insertado en forma de comentario en nuestro código, nos sirve para recordarnos cosas que aun falta por implementar y para que, al retomar nuestra aplicación o clase, al cabo de un tiempo, sepamos por donde seguir sin tener que repasar que estábamos haciendo.

Por ejemplo, considerar el siguiente código:

...
- (void)viewDidLoad {
    [super viewDidLoad];
	/* TODO: Setup view for first appearance
	 1- Update all label with proper info
	 2- Set up the TabBarItem
	 3- Change navigation bar color
	 4- Add buttons to the navigation bar
	 */
}
 
- (void)viewDidUnload {
	// TODO: Release any retained subviews of the main view.
	// e.g. self.myOutlet = nil;
}
...

En ambos casos, tanto si somos nosotros, como otro programador el que retoma la implementación, puede ver lo que falta por hacer. Lo bueno que tiene el Xcode es que, cuando usamos el TODO:, nos añade en el menú de funciones una entrada con la línea que contiene el TODO: y solo esta primera línea, de este modo podemos acceder a esa parte del código rápidamente seleccionandolo en dicho menú.

Sigamos ahora con el #pragma mark, funciona de manera similar, en este caso, lo que conseguimos es que nos aparezca un título o etiqueta en el menú de funciones, de esta manera podemos englobar varias funciones o métodos, bajo un mismo título, estructurando el código y haciendo mucho mas fácil el localizar y desplazarnos a una función en concreto, en lugar de tener que recorrer el código buscando la función deseada.

Aquí tenéis varios ejemplos de uso:

...
#pragma mark Default methods
- (void)viewDidUnload {
}
 
#pragma mark -
#pragma mark Help methods
 
- (void)showHelp {
}
 
- (void)closeHelp {
}
 
#pragma mark -
#pragma mark *** Button actions ***
 
- (void)aButtonWasPressed {
}
 
- (void)deleteButtonPressed {
}
 
#pragma mark Cancel button method
 
- (void)cancelButtonPressed {
}
...

y el resultado en el menú de funciones

Como veis, si usamos el guión “-“, obtenemos una línea horizontal como un separador. Si introducimos texto, este aparece en el menú de funciones.

Un par de observaciones a tener en cuenta cuando se usa el #pragma mark

  • No puede haber un espacio en blanco después del “-“ en #pragma mark –
  • Si el código no aparece como se espera (el separador no aparece), comprobar que ‘Sort list alphabetically’ NO está marcado en Code Sense en la configuración de Xcode.

Finalmente un ejemplo del uso de ambos conjuntamente:

...
#pragma mark -
#pragma mark Life cycle
...
- (void)viewDidLoad {
    [super viewDidLoad];
	/* TODO: Setup view for first appearance
	 1- Update all label with proper info
	 2- Set up the TabBarItem
	 3- Change navigation bar color
	 4- Add buttons to the navigation bar
	 */
}
 
- (void)viewDidUnload {
}
 
#pragma mark -
#pragma mark IBActions
 
- (IBAction)editList {
}
...

Como veis, son un par de trucos, que si se trabaja solo y se tiene buena memoria quizás no sean necesarios, pero que, al trabajar en equipo nos ayudan mucho a la hora de encontrar lo que estamos buscando, entender mejor el código de otros y centrarnos en lo que falta por hacer, ahorrándonos tiempo y dolores de cabeza.

VN:F [1.9.8_1114]
Rating: 4.5/5 (11 votes cast)
VN:F [1.9.8_1114]
Rating: +6 (from 6 votes)
Tagged with:
abr 05

Desde que pusimos en marcha Zenbrains, teníamos claro que queríamos que nuestras aplicaciones tuvieran un denominador común: ser útiles y aportar un valor muy claro al usuario. Obviamente, de vez en cuando también lanzariamos algún “divertimento” como Letris (que está a punto de caramelo!), pero el mayor ejemplo de lo primero fue ZenTap, una aplicación para asistir a la escritura en el iPhone.

Para nuestra sorpresa, hace unos días recibimos un mensaje, a través de nuestra web, de Michael Bergmann. Este hombre de Estados Unidos, padre de un chico autista de 14 años, nos contaba que un par de años atrás su hijo había conseguido empezar a comunicarse apuntando a las letras de un alfabeto. Debemos admitir que una introducción como esta, a falta de leer las siguientes lineas, nos extrañó muchísimo. Pero nada más lejos de nuestras posibilidades de ayudar, el mensaje de Michael continuaba de manera muy interesante: resulta que el inminente lanzamiento del iPad abría una puerta de esperanza, ya que parecía el dispositivo adecuado para tratar de ayudar a su hijo con una aplicación adecuada. La pregunta que tenía para nosotros era la siguiente: Michael había probado ZenTap, y una vez visto el mecanismo de predicción de palabras que usamos en él, quería saber si estábamos dispuestos a echar una mano en esa “aplicación adecuada” que él justamente tenía en mente y a medio desarrollar…

Como no podía ser menos, Aram se puso manos a la obra y colaboró con el proyecto iMean. Menos de dos semanas después de esto, podemos decir que Michael ha terminado la aplicación, que ya está disponible en Appstore, y lo más importante: está ayudando a su hijo a comunicarse mejor!

No podemos estar más contentos tras noticias como estas, que verdaderamente animan a seguir en esto y a confíar en el lado humano de la tecnología. Esperamos que iMean tenga mucho éxito (desafortunadamente, hay usuarios que la necesitan). Y, de algún modo, nos es una buena recompensa saber que hacer bien algunas cosas conlleva, por si sólo, estos pequeños regalos :)

http://imean.mobi
http://imean.mobi/Blog/

http://itunes.com/apps/imean (AppStore)

VN:F [1.9.8_1114]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.8_1114]
Rating: +1 (from 1 vote)
Tagged with:
preload preload preload