在app啟動(dòng)之前獲取全局配置接口數(shù)據(jù),在進(jìn)入app

有時(shí)有需求讓在啟動(dòng)app之前獲取一些全局參數(shù),等拉取接口數(shù)據(jù)后再進(jìn)入app,雖然有時(shí)遇到接口慢也會(huì)慢,但產(chǎn)品就要這么需求怎么辦呢?來(lái)吧。。??催@里

用到線(xiàn)程信號(hào)量

 dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);

此方法阻塞當(dāng)前線(xiàn)程

 dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);

回調(diào)完以后調(diào)用

dispatch_semaphore_signal(semaphore);

讓當(dāng)前線(xiàn)程繼續(xù)運(yùn)行,此方法在阻塞主線(xiàn)程時(shí)子線(xiàn)程會(huì)繼續(xù)運(yùn)行,我們項(xiàng)目中一般都是用的AFN,此時(shí)你會(huì)發(fā)現(xiàn)在你用此方法在AFN回調(diào)時(shí)不走,(當(dāng)時(shí)以為是主線(xiàn)程都停止了,子線(xiàn)程就不走了,其實(shí)不是),仔細(xì)研究了下發(fā)現(xiàn),AFN的網(wǎng)絡(luò)回調(diào)是在主線(xiàn)程里,此時(shí)組線(xiàn)程阻塞了,當(dāng)然沒(méi)法回調(diào)了,將 AFN的回調(diào)隊(duì)列改成子線(xiàn)程一切OK了

    synchNetManager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

時(shí)間有限,只寫(xiě)寫(xiě)方法,具體內(nèi)容,可以百度繼續(xù)研究,信號(hào)量其實(shí)是個(gè)好東西。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容