我正在尝试新的Xcode 9 Main Thread Checker
这很漂亮。我现在要标记/注释我的Obj-C方法只能从主线程调用,这样主线程检查器可以在连接到调试器时自动启动。我找不到任何办法。
答案 0 :(得分:1)
你不能(见更新)。但你可以使用一个断言手动完成(就像PSPDFKit为example做的那样)
assert(Thread.isMainThread, "Method must be called from the MainThread only!")
没有办法。 Tweet from an employee:
不幸的是没有;你不能教你的主线程检查API(CC @kubamracek)
@zaks_anna(节目分析@apple)
Update2:Apple正在跟踪一个开放式雷达,ID为#32659599。所以希望它很快就会实施。
答案 1 :(得分:0)
Main Thread Checker的主要问题在于,它可以在后台线程到达时(即在运行时)捕获仅执行主线程的代码。
真正的解决方案是即使在执行代码之前也要使用静态检查,因为有时候在非平凡的应用程序中很难遍及所有用例。
此外,在错误的线程上执行代码还不是完全的信息(断言),但稍后它仍然会崩溃。
我想在Swift中看到这样的内容:
@mainThreadOnly
和@isOnMainThread
和
if #mainThreadOnly && !#isOnMainThread { raise_warning }