如何在iOS中找到线程的状态?

时间:2012-12-06 06:46:40

标签: ios multithreading time state performance

我已经实现了一些线程函数(我使用NSInvocaionOperation)来执行一些后台进程而不会干扰UI响应。一切正常,我在操作队列中添加的所有选择器都被调用。 (我通过将NSLog放在所有选择器方法中来说这个)。

我想知道更多细节来检查/检查每个线程的状态。

即,

  • 我可以衡量选择者完成所需的时间吗?
  • 我可以知道特定线程的当前状态吗?

如果您添加了一些关于线程优化的更多要点,将会非常有用。

提前致谢。

2 个答案:

答案 0 :(得分:5)

您可以通过调用类似的方法来获取线程执行状态, - isExecuting - isFinished - isCancelled返回bool。

also have a look at this

答案 1 :(得分:0)

目前在iOS上进行线程优化的最佳方法是忘记显式线程管理并改为使用Grand Central Dispatch。这并不适用于所有情况,但如果您在编写时只是在后台调用某些选择器,则显式线程显然有点过分。

这是使用GCD将选择器旋转到背景中的方法:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [self doSomeLongerTask]; // runs in a background thread
    dispatch_async(dispatch_get_main_queue(), ^{
        [self reportOperationDone]; // runs on the UI thread
    });
});