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,编译不了的哦。