2011-11-15 23 views
8

Tengo un código que estoy usando con bastante frecuencia y me gustaría hacer una macro de él. Aunque no estoy exactamente seguro de cómo hacerlo. Aquí está el código que quiero usariOS crear macro

UIImage *titleImage = [UIImage imageNamed:@"myLogo.png"]; 
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:titleImage]; 
self.navigationItem.titleView = titleImageView; 
[titleImageView release]; 

quiero definir este bloque como una macro así que puedo decir más adelante, por ejemplo, addImage (...); Gracias por tu ayuda.

Respuesta

18
#define MY_MACRO(img) \ 
    {\ 
     UIImage *titleImage = [UIImage imageNamed:img]; \ 
     UIImageView *titleImageView = [[UIImageView alloc] initWithImage:titleImage]; \ 
     self.navigationItem.titleView = titleImageView; \ 
     [titleImageView release];\ 
    } 

utilizar de esta manera:

MY_MACRO(@"myLogo.png") 

El uso de {} crea un bloque de alcance, lo que evitará problemas con redefiniciones variables (si tiene variables con el mismo nombre, en el que utiliza la macro)

0

uso #define con el preprocesador, escribir una función, o escribir un métodopara su clase.

0

Prueba la siguiente macro

#define addImage(__imageName__) \ 
UIImage *titleImage = [UIImage imageNamed:__imageName__]; \ 
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:titleImage]; \ 
self.navigationItem.titleView = titleImageView; \ 
[titleImageView release]; \ 
0

#define Image_Macro @ "myLogo.png" UIImage *titleImage = [UIImage imageNamed:Image_Macro]; UIImageView *titleImageView =[[UIImageView alloc] initWithImage:titleImage]; self.navigationItem.titleView = titleImageView;