在C/C++/Objective-C中,您可以使用编译器预处理器定义宏.此外,您可以使用编译器预处理器包含/排除代码的某些部分.
#ifdef DEBUG
// Debug-only code
#endif
Run Code Online (Sandbox Code Playgroud)
Swift中有类似的解决方案吗?
此文章介绍如何使用Crashlytics在Objective-C登录.但是,在完成将Crashlytics和Fabric属性引用到我的项目中的安装步骤之后,我似乎无法访问该方法.
查看Crashlytics.h文件,我可以看到它使用编译器标志定义:
#ifdef DEBUG
#define CLS_LOG(__FORMAT__, ...) CLSNSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#define CLS_LOG(__FORMAT__, ...) CLSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#endif
Run Code Online (Sandbox Code Playgroud)
这个块似乎根据编译器标志包装CLSNLog和CLSLog函数.
所以,我想我只是直接去源,我试图直接从swift文件中引用CLSLog.仍然没有运气:
我的桥接,Header.h:
#import <Crashlytics/Crashlytics.h>
Run Code Online (Sandbox Code Playgroud)
Log.swift:
import Foundation
import Fabric
import Crashlytics
func Log(message: String) {
NSLog("%@", message)
CLS_LOG("%@", message)
CLSLog("%@", message)
}
Run Code Online (Sandbox Code Playgroud)
Log函数中的最后两行抛出错误Use of unresolved identifier.除日志记录功能外,Crashlytics崩溃报告工作正常.根据这篇文章,已经实现了对Swift的日志记录支持.
至于版本,我正在运行最新版本的Fabric/Crashlytics(12月发布,在本文发布时).
(有趣的是,我可以看到/使用CLSLogv()...)
有没有人知道合并CLS_LOG用于Swift项目的正确方法?