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


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

    烟雨林-关注程序员的IT科技博客
    如果你设置成Yes,那么你的waring就等于error,编译不了的哦。

     

  • 相关阅读:
    hdu6314 容斥+数学
    后缀数组+指针
    F. Dominant Indices
    牛客网挑战赛19 B,C,F
    拓展欧几里得理论基础(含一定证明)
    数字
    vue的自定义树形列表组件(及数据格式转换)
    Activiti实现会签功能
    7种单例模式
    MySQL中数据类型(char(n)、varchar(n)、nchar(n)、nvarchar(n)的区别)(转)
  • 原文地址:https://www.cnblogs.com/fuunnyy/p/5275432.html
Copyright © 2020-2023  润新知