【发布时间】: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