func print(_ object: Any) {
#if DEBUG
Swift.print(object)
#endif
}
我有这个函数重载默认的打印功能,所以打印只发生在DEBUG构建上,但是,在RELEASE构建它只是关闭应用程序而我无法确定原因。
有人有什么想法吗?
编辑:阅读日志,我发现当调用此代码时,Crashlytics会将以下内容作为崩溃的原因:
[Crashlytics:Crash] Warning: NSUncaughtExceptionHandler is 'mp_handleUncaughtException' in '/Users/daredevil/Library/Developer/CoreSimulator/Devices/2FB9948E-77D9-4F76-9928-15ED2ED18E4A/data/Containers/Bundle/Application/39AB3114-EB6F-4520-B8FF-90908C5B9654/App.app/Frameworks/Mixpanel.framework/Mixpanel'
每当我删除全局覆盖打印功能时,都不会发生此崩溃。
编辑2:忽略之前的编辑。 Mixpanel与此问题无关。我完全删除它并仍然崩溃。
答案 0 :(得分:1)
我不知道您是否找出导致崩溃的原因,但可能与您使用的打印签名有关。
我使用类似的方法从发行版本中删除打印语句,但是我使用的打印签名是:
// Only show print statements while in DEBUG
func print(_ item: @autoclosure () -> Any, separator: String = " ", terminator: String = "\n") {
#if DEBUG
Swift.print(item(), separator:separator, terminator: terminator)
#endif
}
答案 1 :(得分:-1)
我强烈建议 不 这样做。它可能具有不可预测的次要效果(如您所观察到的),并且它也是完全没有必要的。如果希望print语句仅在调试时运行,则应定义新函数。例如。
func dPrint(_ object: Any) {
#if DEBUG
print(object)
#endif
}