iOS之NSDate\CFAbsoluteTimeGetCurrent\CACurrentMediaTime的區別

iOS_小賢發表於2019-03-04

前幾天專案中正好用到了.就給大家帶來一個面試題.以及遇到技術問題從哪些角度去回答.嗯.一邊講解,一邊寫了些小筆記.希望能給最近面試的朋友一些幫助.

1.從框架的角度

NSDate 屬於Foundation CFAbsoluteTimeGetCurrent 屬於 Core Foundation CACurrentMediaTime 屬於 QuartzCore

2.本質區別

NSDate 或 CFAbsoluteTimeGetCurrent 返回的系統時鐘時間將會從網路時鐘同步. 從時鐘偏移量的角度 mach_absolute_time() 和 CACurrentMediaTime 基於內建時鐘.能夠更精確的測試時間,並且不會根據外部的時間變化而變化.(例如,時區變化\夏時制),它和系統的upTime有關.系統重啟後,CACurrentMediaTime 也會重新設定.

3.常用用法

NSDate \CFAbsoluteTimeGetCurrent 常用於日常時間,時間戳表示,與伺服器之間的資料互動. CFAbsoluteTimeGetCurrent 相當於 [NSDate date]timeIntervalSinceReferenceDate]; CACurrentMediaTime 常用測試程式碼效率

4.專案使用場景

分析: 在購物車點選"+"和"-"時.如果說立即進行伺服器同步的話,代價是非常高!所以會採用"延時提交"的方法. 思路: 連續點選的時候,不提交伺服器.點選停止時,進行同步.

連續點選如何判斷了???? 採用的是判斷2次點選的時間差,如果時間差小於一定的數值(自己根據專案需求判定).那麼即可判斷是連續點選的操作.

相關文章