美文网首页
iOS10 log打印不全

iOS10 log打印不全

作者: BetterComingDay | 来源:发表于2017-08-24 14:10 被阅读18次

    今天在各种搞自定义宏,替换NSLog。修改宏的次数特别多。大家都知道修改任意一个宏,项目就要重新编译。原来项目编译一次只要5秒钟,只要你修改一个宏,编译一次就要25秒钟,5倍,很吓人。大家还是慎用宏。可以参考我原来的文章OC中extern、static、const和宏定义
    写这篇文章的时候需要频繁Edit scheme 这里告诉你们快接键command + shift + , 不用快捷键打开太慢了,你调试完自定义log就可以忘了这个快捷键了。
    下面就是对应的方法了。找一个类定义两个方法

    /*
     获取当前事件,自定义log使用, yyyy-MM-dd HH:mm:ss
     */
    NSString* currentTime(){
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSString *currentTime = [formatter stringFromDate:[NSDate date]];
        return currentTime;
    }
    
    /*
     获取当前项目名称,自定义log使用,
     */
    NSString* projectName(){
        NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
        NSString *projectName = [infoDictionary objectForKey:(NSString *)kCFBundleExecutableKey];
        return projectName;
    }
    

    然后在pch文件中定义宏

    #ifndef __OPTIMIZE__  //DEBUG 模式
    //#ifdef DEBUG  //DEBUG 模式
    #define VCLog(...) printf("%s %s %s\n",[currentTime() UTF8String],[projectName() UTF8String],[[NSString stringWithFormat:__VA_ARGS__]UTF8String]);
    #else
    #define VCLog(...) //Release  不输出log,节省资源
    #endif
    

    一定要调用UTF8String方法,否则会乱码。
    这里对__OPTIMIZE__做一下解释,这个宏是Release模式下系统定义的宏,所以可以根据这个来判断当前是不是release模式。

    这里教大家一个装逼的方法来定义宏,但是没什么卵用,仅仅是用来装逼

    image.png

    这里的下划线是拼接的作用,可以实现一样的效果。

    tips

    这里解决下#ifdef DEBUG不起作用的情况

    image.png
    按照如图所示的步骤检查一下,你这个位置是不是设置了DEBUG这个宏。这里的宏你是可以随意添加的。
    我的项目刚开始就是因为这里没有添加DEBUG导致#ifdef DEBUG不起作用,然后不得已用#ifndef __OPTIMIZE__进行了替换,现在可以放心的使用#ifdef DEBUG了。

    相关文章

      网友评论

          本文标题:iOS10 log打印不全

          本文链接:https://www.haomeiwen.com/subject/hjcedxtx.html