在oc中一些常用的宏定义总结

时间:2023-01-03 21:18:27

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中设置了,

在oc中一些常用的宏定义总结
如果你设置成Yes,那么你的waring就等于error,编译不了的哦。