美文网首页xcode技巧iOS菜鸟级开发真机相关
Xcode8模拟器警告与iOS10真机调试NSLog无效

Xcode8模拟器警告与iOS10真机调试NSLog无效

作者: 囧书 | 来源:发表于2016-09-23 19:09 被阅读1042次

    先解决模拟器的问题

    Xcode8用模拟器运行项目,会打出一堆日志,例如:

    subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0
    subsystem: com.apple.UIKit, category: HIDEventIncoming, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0
    subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0
    subsystem: com.apple.UIKit, category: StatusBar, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0
    subsystem: com.apple.BackBoardServices.fence, category: App, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0
    

    对我们没多大作用,可以屏蔽。

    设置OS_ACTIVITY_MODE.png

    EditScheme -> Run -> Arguments
    在Environment Variables一栏中添加OS_ACTIVITY_MODE并设值为disable,注意打勾。

    解决真机调试NSLog没输出

    iOS 10真机调试的话,会屏蔽掉NSLog。如果NSLog宏定义是这样的话:
    #define NSLog(format, ...) NSLog(format, ## __VA_ARGS__)
    在完成OS_ACTIVITY_MODE设置后会发现真机调试时NSLog不输出了。
    所以需要定义成另一个函数来输出,例如printf()

    NSLog宏定义的写法很多,这里贴上我的写法:

    #ifdef DEBUG
    #define NSLog(format, ...) printf("[%s] %s [第%d行] %s\n", __TIME__, __FUNCTION__, __LINE__, [[NSString stringWithFormat:format, ## __VA_ARGS__] UTF8String]);
    #else
    #define NSLog(format, ...)
    #endif
    

    测试:

    NSLog(@"初始化完毕");
    NSLog(@"测试NSLog:%@", @"OK");
    

    效果:

    [19:47:57] -[ViewController viewDidLoad] [第26行] 初始化完毕
    [19:47:57] -[ViewController TestLog] [第31行] 测试NSLog:OK
    

    相关文章

      网友评论

      本文标题:Xcode8模拟器警告与iOS10真机调试NSLog无效

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