【问题标题】:CLANG: Suppressing runtime warningsCLANG:抑制运行时警告
【发布时间】:2019-05-08 23:43:18
【问题描述】:

当我从后台线程访问 UIView 的 .center 属性时,会收到运行时警告。

对于传统的 xCode 警告,我可以像这样使用 CLANG 来抑制它们:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Weverything"
//code triggering warning
#pragma clang diagnostic pop

但是,这个 -Weverything 标志不适用于运行时警告(与其名称和隐含文档相反),

有谁知道可以通过 clang / pragma 预处理器设置的编译器标志,它也会使运行时警告静音?

附:我知道我可以在 Xcode 中禁用它们,但我需要一个 CLANG 解决方案,这样我就可以在特定行上禁用它们,并且可以轻松地使用我的宏。

【问题讨论】:

  • 不是编译器给出了这些,所以它不能禁用它们。这是操作系统,你应该听警告而不是试图隐藏它们。该标志已完全正确命名和记录。
  • @SamiKuhmonen 对于像读取 UIView 的 .center 这样微不足道的事情,这可以在后台线程中完成,而无需每次编译时发出警告。我的应用程序使用了许多线程,并且将此方法推送到主线程会导致不必要的延迟。
  • 所以你比制作 UI 框架的人更了解这一点?最好联系 Apple 并要求他们在不需要时将其删除。否则,只需忍受警告或更改代码不要在后台线程中触摸它。如果你需要它,通常意味着某处有一个糟糕的设计选择,特别是如果你只需要阅读它。
  • 您可以通过不这样做来禁用它。为什么不将信息保存在可以从其他线程读取的变量中?
  • 正如我所说,运行时警告不是来自编译器。 Clang与他们无关。至少我从未见过这样的事情。你没有包含一个很难说的警告的确切例子。是的,你没有解释太多你的用例,所以没有人能说太多。

标签: objective-c clang c-preprocessor pragma


【解决方案1】:

“编辑方案...”> 诊断中有一个设置“运行时 API 检查”“[] 主线程检查器”。禁用它应该使警告静音。

【讨论】:

  • 我在研究时看到了此设置,但似乎无法像使用 clang 诊断那样仅针对特定代码行禁用它?
猜你喜欢
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 2021-06-03
  • 2020-10-08
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
相关资源
最近更新 更多