我是否可以知道print
,assert
,log_os
等一段代码是否仅在查看文档的情况下才能在DEBUG上编译,因为它通常是不完整的,并且实现不是公开的?
如果没有,这是我唯一的解决方案,可以在编译器预处理程序之间调用用于调试目的的每个代码,如下所示:
#if DEBUG
assert(true)
print("Hello")
#endif
出于安全和性能的原因,我想确保代码完全不存在。
这样的代码将由编译器进行优化,并在发行时将其完全删除,或者将保留一些程序集,例如跳转到空函数:
func DebugOnlyPrint(message: String) {
#if DEBUG
print(message)
#endif
}
答案 0 :(得分:2)
要查看输出运行的发行版,然后在Xcode中转到Window -> Devices
(或按cmd + shift + 2)。
现在将iOS设备连接到Mac并执行> View Device Logs
,您将看到所有输出。
答案 1 :(得分:0)
简单答案:您的示例将在生成的代码中保留一个空函数。
长答案:
要定义仅在一种方案中可用的函数,请将宏放在整个函数定义周围:
#if DEBUG
func DebugOnlyPrint(message: String) {
print(message)
}
#endif
要成功进行编译,这需要将DebugOnlyPrint
的所有函数调用都包装在#if DEBUG
中。在这种情况下,将以不同的方案将功能跟踪完全删除到DEBUG
。
要检查私有框架是否适用,可以为框架目标使用不同的方案来构建项目,然后:
另一个示例:
func DebugOnlyPrint(message: String) {
#if DEBUG
print(message)
#endif
}
由于要检查助理编辑器的对应部分,因此即使没有任何内容也将包含在公共界面(标题)中。