NSLog/PrintLog的使用技巧(Objective-C/Swift)

1.Objective-C中

#ifdef __OBJC__

#ifdef DEBUG
#define NSLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#define NSLog(...)
#endif

#endif

在PCH文件中添加上述代码,在程序中使用到NSLog的地方,调试状态下就会有如下的打印结果,打印结果包含当前的打印是在哪个控制器,哪个方法,以及第几行,可以方便我们快速定位当前打印的位置,在程序中代码量很大时对我们有很大帮助;而在发布状态下则不会有任何打印。

控制器中的代码

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"hello world");
}

打印的结果如下:

2016-08-12 05:02:35.675 NSLog测试[3822:19029] -[ViewController viewDidLoad] [Line 19] hello world

2.Swift中

1> 首先,创建一个Constant.swift文件(文件名自定义),导入UIKit框架,添加如下代码

import UIKit

/// 输出日志

/// - parameter message:  日志消息

/// - parameter logError: 错误标记,默认是 false,如果是 true,发布时仍然会输出

/// - parameter file:     文件名

/// - parameter method:   方法名

/// - parameter line:     代码行数

func printLog<T>(message: T,
    logError: Bool = false,
    file: String = __FILE__,
    method: String = __FUNCTION__,
    line: Int = __LINE__)
{
    if logError {
        print("\((file as NSString).lastPathComponent)[\(line)], \(method): \(message)")
    } else {
        #if DEBUG
            print("\((file as NSString).lastPathComponent)[\(line)], \(method): \(message)")
        #endif
    }
}

2> 进行如下配置
这里写图片描述

3> 在控制器中进行如下测试

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        print("hello world")
        print("---------------")
        printLog("hello world")
    }
}

输出结果如下,很明显,用printLog也实现了类似上述Objective-C中NSLog的功能,可以输出打印是在那个类,哪个方法,第几行。

hello world
---------------
ViewController.swift[18], viewDidLoad(): hello world
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值