Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在试验新的 Xcode 9主线程检查器
这很整洁。我现在想标记/注释我的 Obj-C 方法以仅从主线程调用,以便主线程检查器可以在附加到调试器时自动启动。我找不到任何方法来做到这一点。
你不能(见更新)。但是您可以使用断言手动执行此操作(例如 PSPDFKit 所做的)
assert(Thread.isMainThread, "Method must be called from the MainThread only!")
不可能。来自员工的推文:
不幸的是,没有;你不能教主线程检查器关于你的 API (CC @kubamracek) @zaks_anna (程序分析@apple)
不幸的是,没有;你不能教主线程检查器关于你的 API (CC @kubamracek)
@zaks_anna (程序分析@apple)
更新 2:Apple 正在跟踪一个开放式雷达,ID#32659599。因此,希望它很快就会实施™。
主线程检查器的主要问题是,当后台线程(即运行时)到达后台线程时,它只能捕获执行主线程的代码。
真正的解决方案是在代码执行之前使用静态检查,因为有时很难在一个非平凡的应用程序中遍历所有用例。
更重要的是,代码在错误的线程上执行并不是一个信息(断言),而无论如何它会在稍后崩溃。
我想在 Swift 中看到类似的东西: @mainThreadOnly和@isOnMainThread
@mainThreadOnly
@isOnMainThread
和
if #mainThreadOnly && !#isOnMainThread { raise_warning }