zoukankan      html  css  js  c++  java
  • 自定义 NSLog以便发版和调试

    问题

    • 开发中用了大量的 NSLog,但是发布时想取消这些 NSLog
    • 开发中是否经常用过 NSLog(@"%s", __FUNCTION__);

    解决问题

    • 新建 ExtendNSLog 类,继承自 NSObject
    • 在 ExtendNSLog.h 中删除默认代码
    • 添加以下函数声明:
    void ExtendNSLog(const char *file, int lineNumber, const char *functionName, NSString *format, ...);
    • 在 ExtendNSLog.m 中删除默认代码
    • 添加以下代码实现:
     1 void ExtendNSLog(const char *file, int lineNumber, const char *functionName, NSString *format, ...) {
     2 
     3     va_list ap;
     4 
     5     va_start(ap, format);
     6 
     7     if (![format hasSuffix: @"
    "]) {
     8         format = [format stringByAppendingString: @"
    "];
     9     }
    10 
    11     NSString *body = [[NSString alloc] initWithFormat:format arguments:ap];
    12 
    13     va_end(ap);
    14 
    15     NSString *fileName = [[NSString stringWithUTF8String:file] lastPathComponent];
    16     fprintf(stderr, "(%s) (%s:%d) %s",
    17             functionName,
    18             [fileName UTF8String],
    19             lineNumber,
    20             [body UTF8String]);
    21 }
    • 新建 PrefixHeader.pch 文件
    • 输入以下内容:
     1 #ifdef __OBJC__
     2 
     3 #import <UIKit/UIKit.h>
     4 #import <Foundation/Foundation.h>
     5 
     6 #import "ExtendNSLog.h"
     7 
     8 #ifdef DEBUG
     9 #define NSLog(args...) ExtendNSLog(__FILE__, __LINE__, __PRETTY_FUNCTION__, args);
    10 #else
    11 #define NSLog(x...)
    12 #endif
    13 
    14 #endif
    • 选择 项目->TARGETS->[ProjectName]->Build Settings
    • 在搜索框输入 prefix header
    • 在 Prefix Header中输入 [ProjectName]/PrefixHeader.pch

    如下图所示

    • 运行测试,如下图修改运行模式

  • 相关阅读:
    [virsh] error: unknown OS type hvm解决办法
    TCP长连接与短连接的区别
    MySQL数据优化总结-查询备忘录
    Tomcat 调优测试
    MySQL的分表与分区
    iptables防火墙入门
    regex正则
    xtrabackup
    锁&lock与latch
    文档测试
  • 原文地址:https://www.cnblogs.com/jiahao89/p/5069861.html
Copyright © 2011-2022 走看看