8

I have a piece of code I'm using fairly often and would like to make a macro out of it. I'm not exactly sure how to do that though. Here's the code I want to use

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

I want to define this block as a macro so I can later say for instance addImage(...); Thanks for your help.

4 Answers 4

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

Use it like this:

MY_MACRO( @"myLogo.png" ) 

The use of {} creates a scope block, which will prevent problems with variable redefinitions (if you have variables with the same name, where you use the macro).

Sign up to request clarification or add additional context in comments.

Comments

0

use #define with the preprocessor, write a function, or write a method for your class.

Comments

0

Try the following macro

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

Comments

0

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.