【问题标题】:How to configure MainThread checker for your own code?如何为自己的代码配置 MainThread 检查器?
【发布时间】:2020-08-13 03:12:44
【问题描述】:

我有一个类方法,我想始终在主线程中执行。

如果在后台线程上调用该方法(就像 UI 相关方法一样),我是否可以配置 XCode 主线程检查器以引发“紫色警告”?

【问题讨论】:

  • 有一些undocumented environment variables,但他们不提供您正在寻找的东西。恐怕这是不可能的。只需在方法的第一行添加assert(Thread.isMainThread, "You should run this on the main thread!") (Swift) 即可。
  • 谢谢 - 我担心我不得不退回到这个......
  • 我收到了一位 Apple 工程师的回复 - 没有记录的方法。它可以意味着任何东西,没有办法,有办法,......他建议使用dispatchPrecondition(condition: .onQueue(.main))而不是断言。
  • 干得好!如果您将其写为答案,我会很高兴地接受它:-)

标签: ios xcode macos


【解决方案1】:

有一些undocumented environment variables,例如MTC_SUPPRESSION_FILE,它允许您提供要从检查器中排除的类、方法和选择器的列表。与您正在寻找的相反的方式。我(快速)检查了libMainThreadChecker.dylib,但找不到更多。

然后我收到了一位 Apple 工程师的回复 - 没有记录的方式。它可能意味着任何东西 - 没有办法或有办法,但它没有记录在案1。他建议只使用 ...

dispatchPrecondition(condition: .onQueue(.main))

...在方法的开头。

1 如果有人想深入了解该库,请访问/Applications/Xcode-beta.app/Contents/Developer/usr/lib/libMainThreadChecker.dylib

【讨论】:

    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    相关资源
    最近更新 更多