添加PCH文件以及自定义输出(OC & Swift)
2016-05-02 23:23
381 查看
[b]运行环境: Xcode 7.3 OX 10.11.3
[/b]
* PCH文件的内容能被项目中的其他所有源文件共享和访问(全局引用);
* PCH文件一般存放常用的宏 & 头文件;
* 可以存放打开和关闭日志输出功能(NSLog & print);
创建PCH文件
1)新建文件 ⌘+N;
2)选择Other-PCH File
3)设置名称-添加到项目-Create
添加PCH文件
1)选择目标Targets - Build Settings - 输入Prefix;
2)设置
3) 设置
1) 输出日志是会大量损耗系统性能;
2) 输出的信息很容易会被截取到,导致信息不安全;
3) 一般做法:自定义输出,Debug 阶段输出,release 阶段忽略。
2. OC版
3. Swift版
注意:
在Swift中,如果你设置了该方法,替换完了,但是。。。。不打印任何输出信息,你需要进行如下操作:
1)选择目标Targets - Build Settings - 输入swift;
2) 在
4. 自定义DEBUG相关的宏
1)选择目标Targets - Build Settings - 输入debug;
2)选择
AQ: 检查PCH在
Q2: OC版本设置自定义输出,不打印任何输出。
AQ: 检查当前的模式是否为 DEBUG模式,在
Q3: swift 版本设置自定义输出,无效
AQ: 参考 swift自定义输出的注意
[/b]
一、PCH文件
说明* PCH文件的内容能被项目中的其他所有源文件共享和访问(全局引用);
* PCH文件一般存放常用的宏 & 头文件;
* 可以存放打开和关闭日志输出功能(NSLog & print);
创建PCH文件
1)新建文件 ⌘+N;
2)选择Other-PCH File
3)设置名称-添加到项目-Create
添加PCH文件
1)选择目标Targets - Build Settings - 输入Prefix;
2)设置
Precompile Prefix Header为
YES;
3) 设置
Prefix Header为
$(SRCROOT)/你的PCH文件名称.pch;
二、自定义输出
1. 说明1) 输出日志是会大量损耗系统性能;
2) 输出的信息很容易会被截取到,导致信息不安全;
3) 一般做法:自定义输出,Debug 阶段输出,release 阶段忽略。
2. OC版
// GLog 替换 NSLog 来输出 #ifdef DEBUG #define GLog(...) NSLog(__VA_ARGS__) #else #define GLog(...) #endif // 输出函数与行号 #ifdef DEBUG # define DLog(fmt, ...) NSLog((@"[函数名:%s]" "[行号:%d]:" fmt), __FUNCTION__, __LINE__, ##__VA_ARGS__); #else # define DLog(...); #endif 参数说明: 1) __VA_ARGS__ 是一个可变参数的宏(C99新增),宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。 2) __FILE__ 宏在预编译时会替换成当前的源文件名 3) __LINE__宏在预编译时会替换成当前的行号 4) __FUNCTION__宏在预编译时会替换成当前的函数名称 有了以上这几个宏,特别是有了__VA_ARGS__ ,调试信息的输出就变得灵活多了。
3. Swift版
/// 输出日志 /// /// - 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 } }
注意:
在Swift中,如果你设置了该方法,替换完了,但是。。。。不打印任何输出信息,你需要进行如下操作:
1)选择目标Targets - Build Settings - 输入swift;
2) 在
Other swift flags中设置新增
-D DEBUG
4. 自定义DEBUG相关的宏
1)选择目标Targets - Build Settings - 输入debug;
2)选择
Preprocessor Macros -> Debug,添加自定义的宏即可。
三、常见问题
Q1: 添加了PCH文件,但是一直报如下错误:AQ: 检查PCH在
Build Settings中是否设置正确,并且
Prefix Header路径需要带上
.pch后缀。
Q2: OC版本设置自定义输出,不打印任何输出。
AQ: 检查当前的模式是否为 DEBUG模式,在
info->Build Configuration中设置为Debug
Q3: swift 版本设置自定义输出,无效
AQ: 参考 swift自定义输出的注意
相关文章推荐
- Swift中数组集合-b
- swift字典集合-备
- Swift字符串的插入、删除和替换-备
- 10个惊艳的Swift单行代码
- 聊聊 Swift 3.0 - 新版本对我们的影响
- Swift编写Android应用程序入门
- Swift之函数
- error: unable to invoke subcommand: /usr/bin/swift-build (No such file or directory)
- swift提交json.swfit post json.swfit提交header参数
- Swift Swift和OC混编
- Swift - 使用arc4random()、arc4random_uniform()取得随机数
- Swift基础05
- ThinkPHP 3.2.3 使用 Swift Mailer 邮件系统发送邮件
- Swift基础04
- Swift基础03
- Swift基础02
- Swift--入门
- Swift基础01
- 04_Swift2基础之类型安全和类型推测+字面量+类型别名
- iOS学习笔记48-Swift(八)反射