Snippets de código en Xcode 4

  2 mins read

Muchas veces mientras editamos código, nos damos cuenta que tenemos que usar las mismas sentencias y no hablo de duplicar código sino de repetir ciertas sentencias que son necesarias repetir. Para estos casos se inventaron los snippets de código. Los snippets son pequeños trozos de código que podemos personalizar según nuestras necesidades. En este post, hablamos de los snippets, como añadir nuevos y algunos de los que personalmente más uso.

Como añadir snippets en Xcode 4

Es sencillo, solo tenemos que arrastrar un texto a esta parte de la interfaz de Xcode 4:

Snippets en Xcode 4

Si no vemos esta parte de la interfaz, pulsamos “CMD + ALT + 0”, lo que nos mostrará/ocultará la barra de la derecha y luego hacemos clic en el segundo botón de la barra de abajo que acaba de aparecer, más concretamente el que se muestra en la imagen anterior.

Una vez arrastrado un texto veremos varias campos a rellenar, paso a explicar cada uno:

  • Title: El nombre que queremos darle a nuestro snippet.
  • Platform: Es la plataforma en la queremos que funcione nuestro snippet, All / iOs / Mac. A no ser que sea muy especifico dejaremos All.
  • Language: El lenguaje en el que tiene que funcionar el snippet.
  • Completion shortcut: Asignaremos una palabra, recomiendo que usemos una no reservada por Xcode para que cuando estemos editando código y pulsemos “Esc” nos autocomplete nuestro snippet.
  • Completion scopes: Donde funcionará el snippet, a nivel de clase, de método, en cualquier parte…

Básicamente esos son todos los campos. Cabe destacar que en nuestro código podemos asignar trozos que queremos rellenarlos cuando estemos programando y no en este momento, ya que puede ser un NSString o cualquier nombre de variable, para hacer esto usaremos la notación: <#NOMBRE_VAR#> y así cuando usemos nuestro snippet podremos saltar directamente a esta “variable” con el teclado de una forma sencilla.

Algunos snippets que uso personalmente

Para empezar tenemos el clásico if de interface, es decir, si es iPad hacemos tal código, sino hacemos esto otro:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    <#codeIpad#>
} else {
    <#cpdeIphone#>
}

Completion scope: Function or method.


En una entrada anterior, mostrar trazas solo con compilación debug, recordaremos mi sugerencia de añadir una macro para NSLog dependiendo de una variable para hacer trazas o no. He creado un snippet para escribir dicho log poniendo solo NSLog, de esta forma no nos quitamos las viejas costumbres 😉

DLOG(@"%@",<#parametro#>);

Completion scope: Function or method.


Para seguir con el orden en las clases uso bastante el #pragma mark que ofrece objetive-c, esto combinado con el shortcut “CTRL + 6” ofrece de un vistazo todos los métodos disponibles en la clase actual. Para agilizar los pragma marks, he creado el siguiente snippet muy simple de usar:

#pragma mark - pragma mark <#Label#>

Completion scope: Class implementation.


Relacionado con la documentación de appledoc, para documentar cada método hay que seguir cierta nomenclatura. Para ello tenemos este simple snippet:

/**
 <#Method desc#>
 
 @param <#param name#> <#desc#>
 */

Completion scope: Class implementation.

Estos son básicamente los que más uso, me permiten funcionar más rápido. Y vosotros, ¿Cuáles usáis?

Otros usuarios nos recomiendan:

Marc Sallent nos recomienda vía twitter una forma rápida de hacer el más típico de los bucles for:

for (int i=0; i<<#limite#>; i++) {

}

Completion scope: Function or method.

Written by:

Christian Panadero Martinez

  • Pingback: Bitacoras.com()

  • memmaker650

    Muy buen artículo.

    Añado por si te interesa que yo para guardar y organizar mis snippets uso Snippets app. Es un poco carilla pero realmente funciona muy bien para almacenarlos.

    Un saludo

  • cristianromero_7@hotmail.com

    Hola, me gustaría saber si es posible eliminar los snippets que hemos creado. Y si hay alguna forma distinta a la de crear un snippets para que cierre automáticamente las comillas dobles y los paréntesis.

    Gracias.

    Saludos.