什么时候在iOS应用程序的主线程上没有执行?

时间:2014-09-22 12:44:31

标签: ios objective-c iphone xcode

我知道要进行UI更新,您需要在主线程上执行更新。我是用

做的
[[NSOperationQueue mainQueue] addOperationWithBlock:]

但目前我只是在UI更新无效的情况下添加它,而不理解原因。

你怎么知道在主线程上执行了哪些事情以及哪些事情不是?通常所有回调和委托函数都在一个侧面线程上吗?那些在触发某些事件时执行的功能怎么样,比如按下按钮?

我想知道主线上没有东西时的一般规则,所以我不必等待先破坏的东西。

1 个答案:

答案 0 :(得分:0)

您始终可以使用+isMainThread方法检查您是否在主线程上运行:

-(void)uiUpdateMethod
{
    if([NSThread isMainThread])
    {
        //main just exec code
    }
    else
    {
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            //exec code
        }];
    }
}

但据我了解,您想知道在后台线程上执行的确切方法。所以不幸的是,这是一个非常复杂的问题和答案是框架文档。