2011-11-15 7 views
8

Ho un codice che sto usando abbastanza spesso e vorrei fare una macro fuori di esso. Non sono esattamente sicuro di come farlo comunque. Ecco il codice che voglio usareiOS crea macro

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

voglio definire questo blocco come una macro in modo da poter poi dire che per esempio addImage (...); Grazie per l'aiuto.

risposta

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

usare in questo modo:

MY_MACRO(@"myLogo.png") 

L'uso di {} crea un blocco campo di applicazione, che impedirà problemi con ridefinizioni variabili (se si dispone di variabili con lo stesso nome, in cui si utilizza la macro).

0

uso #define con il preprocessore, scrivere una funzione, o scrivere un metodoper la vostra classe.

0

Provare la seguente 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;