[swift心得]异步调用刷新主界面UI记得要用dispatch_get_main_queue

1.先去显示出主界面
再去获取相关数据
-》获得到数据后,再去更新主界面
-》期间要记得用更新到主界面UI的线程中:
       dispatch_async(dispatch_get_main_queue(), { () -> Void in
            // add your code to update UI
        })
如此:
对于UI部分的内容的更新
-》比如设置了label的text
-》就可以立刻得到更新了
-》否则UI会要等不定期,很长时间之后,才能得到更新
详见:
后来,又将其整理出了对应的函数:
let MainThread:dispatch_queue_t = dispatch_get_main_queue()

/***************************************************************************
 * GCD/Queue/Thread functions
 ***************************************************************************/

func delayDispatch(delayTimeInSec:Double, inThread:dispatch_queue_t, thingsTodo:()->()) {
    let dispatchDelayTime = dispatch_time(
        DISPATCH_TIME_NOW,
        Int64(delayTimeInSec * Double(NSEC_PER_SEC))
    )

    dispatch_after(dispatchDelayTime, inThread, thingsTodo)
}

func dispatchMain_async(thingsTodo:()->()) {
    dispatch_async(MainThread, thingsTodo)
}
调用举例:
        dispatchMain_async({
                let curTitle = self.normalTitle
                self.setTitle(curTitle, forState:UIControlState.Normal)
        })
更多线程方面的函数,可参考我的库:


发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量