最新消息:服务器现已从linode换到fzhost.net,且主题已从retina 0.2换为大前端D8

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

Swift crifan 21浏览 0评论
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)
        })
更多线程方面的函数,可参考我的库:
https://github.com/crifan/CrifanThread

转载请注明:在路上 » [swift心得]异步调用刷新主界面UI记得要用dispatch_get_main_queue

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
51 queries in 0.408 seconds, using 12.47MB memory