1.打印CGRect,Size,Point
#define NSLogRect(rect) NSLog(@"%s x:%.4f, y:%.4f, w:%.4f, h:%.4f", #rect, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)
#define NSLogSize(size) NSLog(@"%s w:%.4f, h:%.4f", #size, size.width, size.height)
#define NSLogPoint(point) NSLog(@"%s x:%.4f, y:%.4f", #point, point.x, point.y)
2.宏定义的销毁
#define NetworkOn //定义一个宏,如果该宏定义了,则在应用里使用网络
-(void)closeNetwork
{
//突然发生意外的情况,网络无法使用了,调用该方法,取消NetworkOn的宏定义
#undef NetworkOn
}
3.条件编译语句 #if #else #endif
1》判断是否开启ARC,有些库需要ARC支持,则在编译之前可以判断用户有没有开启ARC,同样__has_feature(objc_arc)这玩意儿也是xcode预置的 , 前缀是这个的"__"都是预定宏;
#if !__has_feature(objc_arc)
//如果没有开启ARC这里可以做一些错误处理 比如:
#error "啊 啊 啊~ 伦家需要ARC"
#endif
2》对不同版本的os系统做策略
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0
//如果ios版本低于7.0,这里可以干一些事情
#endif
3》判断设备类型
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#ifdef IS_IPAD
//这台设备是IPAD呀~~~~
#else
//这货是IPhone
#endif
4》对于常用的编译语句总结
//这个东西简单但是很常使用,正所谓IF在手,天下我有 哈哈哈
#if define #ifdef #ifndef #elif
#if define = #ifdef
#if !define = #ifndef
#elif = "else if"
5》错误、警告处理 #error 这个可以终止不满足使用条件的库不被编译
#if !__has_feature(objc_arc)
#error "我的低调不是你装逼的资本!这个库需要开启ARC,不然你别用!"
#endif
6》对于一些警告的强制措施,做一个高逼格的程序猿
如果你在Xcode中设置了,
如果你设置成Yes,那么你的waring就等于error,编译不了的哦。