最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
iOS中多倒計(jì)時(shí)場景的示例分析-創(chuàng)新互聯(lián)

小編給大家分享一下iOS中多倒計(jì)時(shí)場景的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括西鄉(xiāng)塘網(wǎng)站建設(shè)、西鄉(xiāng)塘網(wǎng)站制作、西鄉(xiāng)塘網(wǎng)頁制作以及西鄉(xiāng)塘網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,西鄉(xiāng)塘網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到西鄉(xiāng)塘省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

背景

在我們開發(fā)APP的過程中,或多或少都遇到過需要使用倒計(jì)時(shí)的場景,大多數(shù)應(yīng)用中的用戶登錄注冊過程中獲取驗(yàn)證碼的倒計(jì)時(shí),電商或者外賣APP中的訂單送達(dá)的倒計(jì)時(shí),以及秒殺類APP的秒殺倒計(jì)時(shí)等。對于這些需要倒計(jì)時(shí)的場景,通常情況下的解決方案是:在需要展示倒計(jì)時(shí)的各View模塊各自維護(hù)一個(gè)自己的倒計(jì)時(shí)Timer,通過Timer的回調(diào)和模塊本身需要的倒計(jì)時(shí)時(shí)間來更新對應(yīng)View的倒計(jì)時(shí)的顯示,再在此基礎(chǔ)上加上對應(yīng)的時(shí)間校準(zhǔn)方案,一個(gè)簡單的倒計(jì)時(shí)需求就完成了。

問題

對于APP內(nèi)倒計(jì)時(shí)的業(yè)務(wù)如果只出現(xiàn)在單一的頁面或者是少數(shù)的頁面場景中沒什么太大的問題的,通常對于秒殺類APP的倒計(jì)時(shí)場景往往是在某個(gè)頁面或者某幾個(gè)頁面中有多個(gè)倒計(jì)時(shí)共同存在的,這種產(chǎn)品需求的技術(shù)展現(xiàn)方式可能是TableView或者CollectionView中的多個(gè)Cell,也可能是多個(gè)自定義的View模塊,如果我們此時(shí)依然使用每個(gè)Cell或者每個(gè)View模塊各自維護(hù)一個(gè)單獨(dú)的倒計(jì)時(shí)Timer,當(dāng)前APP內(nèi)就會(huì)同時(shí)存在多個(gè)定時(shí)器Timer,這對于性能來說是存在一定程度的影響的。那么我們怎么才能更好的解決多倒計(jì)時(shí)場景的問題呢?

iOS中多倒計(jì)時(shí)場景的示例分析

解決方案

既然我們不能讓每一個(gè)顯示倒計(jì)時(shí)的View模塊各自維護(hù)一個(gè)定時(shí)器Timer,那我們就提供一個(gè)專門的模塊TimerService來提供倒計(jì)時(shí)的服務(wù),TimerService內(nèi)部負(fù)責(zé)維護(hù)唯一一個(gè)定時(shí)器,同時(shí)提供添加和移除監(jiān)聽者的接口以及監(jiān)聽者需要實(shí)現(xiàn)的協(xié)議protocol,內(nèi)部通過HashTable來存儲(chǔ)監(jiān)聽者,每次定時(shí)器回調(diào),遍歷所有監(jiān)聽者進(jìn)行回調(diào),監(jiān)聽者在不需要接收定時(shí)器回調(diào)的時(shí)候只需要從TimerService中移除即可。

TimerService.h對外提供的API和監(jiān)聽者需要實(shí)現(xiàn)的協(xié)議主要如下:

//監(jiān)聽者需要實(shí)現(xiàn)的協(xié)議
@protocol TimerListener 
@required
- (void)didOnTimer:(TimerService *)timer;
@end

//對接提供的主要接口
+ (instancetype)sharedInstance;
- (void)addListener:(id)listener;
- (void)removeListener:(id)listener;

TimerService.m的內(nèi)部主要實(shí)現(xiàn)如下:

//定時(shí)器回調(diào)
- (void)onTimer { 
 [self.map.allObjects enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 
 id listener = obj; 
 if([listener respondsToSelector:@selector(didOnTimer:)]){  
  [listener didOnTimer:self]; 
  } 
 }];
}

#pragma mark - public
- (void)addListener:(id)listener { 
 TIMER_SERVICE_LOCK(self.operationsLock) 
 if(![self.map containsObject:listener]){ 
 [self.map addObject:listener]; 
 if(self.map.count > 0){  
  //啟動(dòng)  
  [self startTimer]; 
 } 
 } 
 TIMER_SERVICE_UNLOCK(self.operationsLock)
}
- (void)removeListener:(id)listener { 
 TIMER_SERVICE_LOCK(self.operationsLock) 
 if([self.map containsObject:listener]){ 
 [self.map removeObject:listener]; 
 if(self.map.count == 0){  
  //暫停  
  [self stopTimer]; 
 } 
 } 
 TIMER_SERVICE_UNLOCK(self.operationsLock)
}

使用

需要接收定時(shí)器回調(diào)的模塊,只要實(shí)現(xiàn)TimerListener協(xié)議,在需要接收定時(shí)器回調(diào)的時(shí)把其添加到TimerService中,在業(yè)務(wù)不需要接收定時(shí)器回調(diào)的時(shí)候把其從TimerService中移除即可,這樣所有的倒計(jì)時(shí)業(yè)務(wù)只需要維護(hù)一個(gè)定時(shí)器即可搞定。

以上是“iOS中多倒計(jì)時(shí)場景的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文名稱:iOS中多倒計(jì)時(shí)場景的示例分析-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://fisionsoft.com.cn/article/dcshcj.html