1. 预定义:#define
在object-c中,跟C语言一样都是采用#define才使用,但末尾是没有分号的;
例子:
#define PI 3.14
在之后即可引用。
2. 条件编译:#ifdef,#end,#elseif
#ifdef,#else,#endif如我们常识认为的那样,程序会根据判断条件处理或者忽略某一个程序段。
例子:
#ifdef MAC_OS_X
# define DATADIR “/uxnl/data”
#else
# define DATADIR “\usr\data”
#endif
3. 数组
在object-c中,C语言的数组格式初始化和引用都能够用,但在object-c中不提倡使用。
#define isRetina CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size)
上边这个不严密,在iOS3.2之前的设备上会造成Crash,用下边这个:
#define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
// 是否高清屏
#define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 960), [[UIScreen mainScreen] currentMode].size) : NO)
// 是否iPad
#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
// 是否模拟器
#define isSimulator (NSNotFound != [[[UIDevice currentDevice] model] rangeOfString:@"Simulator"].location)