如何在 Obj-C 中标记仅从主线程调用的方法?



我正在试验新的 Xcode 9 主线程检查器

这是非常整洁的。我现在想标记/注释我的 Obj-C 方法,使其仅从主线程调用,以便主线程检查器在附加到调试器时可以自动启动。我找不到任何方法可以做到这一点。

你不能(见更新(。但是您可以使用断言来手动执行此操作(例如PSPDFKit所做的(

assert(Thread.isMainThread, "Method must be called from the MainThread only!")


更新:

没有办法。来自员工的推文:

不幸的是,没有;你不能教主线程检查器关于你的API(CC @kubamracek(

按@zaks_anna(程序分析@apple(


更新2:苹果正在跟踪一个开放的雷达,ID#32659599。因此,希望它能很快™实施。

主线程检查器的主要问题是,当后台线程到达它时,即在运行时,它可以捕获仅执行主线程的代码。

真正的解决方案是在执行代码之前使用静态检查,因为有时很难在非平凡的应用程序中的所有用例中完成。

更重要的是,代码在错误的线程上执行并不是一个信息(断言(,而它无论如何都会在片刻后崩溃。

我想在 Swift 中看到这样的东西:@mainThreadOnly@isOnMainThread

if #mainThreadOnly && !#isOnMainThread { raise_warning }

相关内容

  • 没有找到相关文章

最新更新