swift开发记录 - DEBUG关键字及自定义日志输出

之前我们在objective-c的时候经常使用DEBUG来控制用来调试的代码,如下。

#ifdef DEBUG
    NSLog(@"debug log!!!!");
#else
    NSLog(@"release log!!!");
#endif

在debug模式中,会输出debug log!!!!,release模式中则是release log!!!

但是,在swift中如果也向上面的一样使用的话,就会出现意外情况。

#if DEBUG //有一些变化,def变没了
    NSLog(@"debug log!!!!");
#else
    NSLog(@"release log!!!");
#endif

在debug模式中,会输出release log!!!,release模式中则是release log!!!

其实,这主要是apple又恶心了下我们。。。

我们需要在Build Settings->Swift Compiler - Custom Flags->Other Swift Flags中的DEBUG上添加一个-D DEBUG就可以了。

输入图片说明

##自定义日志输出格式

由于Apple那恶心的日志输出方式造成我们无法很快的定位代码位置,这时就需要我们去自定义一个自己需要的日志输出方法了。在objective-c中可以使用PrefixHeader(PCH文件)的方式添加下面的自定义宏命令

#ifdef DEBUG
#define DLog( s, ... ) NSLog( @"%@ [%@:%d(%p)]", [NSString stringWithFormat:(s), ##__VA_ARGS__], [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, self )
#else
#define DLog( s, ... )
#endif

//使用例子
//DLog(@"我是日志1");
//DLog(@"我是日志%d",2);
//2015-10-28 16:41:18.675 didauth[438:60b] 我是日志1 [LoadingViewController.swift:26]
//2015-10-28 16:41:18.676 didauth[438:60b] 我是日志2 [LoadingViewController.swift:27]

swift中的话宏就没法那么方便的被调用了,这时我们可以做一个对NSObject的扩展。

//NSOjbect+DLog.swift
extension NSObject{
    #if DEBUG
    func DLog(s:String,file:String=__FILE__,line:Int=__LINE__){
        let filename = NSString(UTF8String: file)!.lastPathComponent;
        NSLog("\(s) [\(filename):\(line)]");
    }
    #else
    func DLog(s:String){
    }
    #endif
}

/*
DLog(@"我是日志1");
let index:int = 2;
DLog(@"我是日志\(index)");
//2015-10-28 16:41:18.675 didauth[438:60b] 我是日志1 [LoadingViewController.swift:26]
//2015-10-28 16:41:18.676 didauth[438:60b] 我是日志2 [LoadingViewController.swift:28]
*/

转载于:https://my.oschina.net/destroy001/blog/523144

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值