1、为了全文通用,选择在PCH文件中写:
#define CHLog(...) printf("[文件:%s] 第%d行: %s\n",/* 文件名 */[[[NSString stringWithUTF8String:__FILE__] substringWithRange:NSMakeRange([[NSString stringWithUTF8String:__FILE__] rangeOfString:@"/" options:NSBackwardsSearch].location + 1, [[NSString stringWithUTF8String:__FILE__] rangeOfString:@"." options:NSBackwardsSearch].location - [[NSString stringWithUTF8String:__FILE__] rangeOfString:@"/" options:NSBackwardsSearch].location - 1)] UTF8String] ,/* 行号 */__LINE__, /* 动态参数 */[[NSString stringWithFormat:__VA_ARGS__] UTF8String]);
- 使用方法与系统原有的一致。
- 输出格式:[文件:TCPTool1] 第868行: 要打印的信息

2、[升级版调试、发布打印]
3、Swift版本
-
3.1 定义 全局函数
// MARK: - 全局函数
func GCLog<T>(_ message: T, file: String = #file, func_name: String = #function, line_num: Int = #line) {
#if DEBUG
// 第169行:要打印的信息
print("第\(line_num)行:\(message)")
//var file_name = (file as NSString).lastPathComponent;
//file_name = file_name.components(separatedBy: ".").first ?? "文件名"
// ViewController 第169行:要打印的信息
//print("\(file_name) 第\(line_num)行:\(message)")
// ViewController viewDidLoad() 第169行:要打印的信息
//print("\(file_name) \(func_name) 第\(line_num)行:\(message)")
#endif
}
-
3.2 调整在哪一个状态下打印
- 上面 #if DEBUG #endif 中的 DEBUG来自这里。
