Apr 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:
Apr 05

Since we started Zenbrains, we knew it clear that we wanted our applications to have a common fact: being useful and giving the user a very clear value. Of course, from time to time, we would also launch some “divertimento” like Letris (which is coming soon to the store!), but the most clear example of the previous lines was ZenTap, an application for writing assistance on the iPhone.

To our surprise, some days ago we received a message through our website, from Michael Bergmann. He told us he was a father of a 14 years old autistic boy, who had learned to communicate by means of pointing to letters on an alphabet board, which was an amazing advanced step.

We must admit that after such an introduction, and before having read his next words, we were a little confused. But, gaining connection with our possibilities of helping, Michael’s message continued in a very interesting way: the upcoming release to market of iPad brought a very good chance, since it looked like the perfect device in order to help his son… if he had the right application. His question to us was the following: Michael had tried ZenTap, and once he had seen the word prediction mechanism we had used on it, he wanted to know if we were able to help him on that “right application” he had in mind and was about to develop…

So Aram put his shoulders to the wheel and collaborated with the iMean project. Less than two weeks ago from this, we can say that Michael has finished the first version of the app, which is already available on the App Store, and the most important thing: it is helping his son to communicate better!

We are very pleased to hear news like this, which help us to keep working and trusting the human side of technology. We wish a great success to iMean (unfortunately, there are many users that may need it). It is a good reward for us to know that doing some good things brings those good prizes with them.

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