ReactiveCocoa 實(shí)戰(zhàn)-統(tǒng)計(jì)界面時長

有個需求,統(tǒng)計(jì)一些界面的顯示時長,并且考慮鎖屏后臺等因素。 有了需求,那么我們需要的是下邊幾種情況?

1. 從viewDidAppear 到 viewDidDisappear

2. 從applicationDidBecomeActive 到applicationWillResignActive


繼承大法

一種方式是自定義一個UIViewController類,然后所有統(tǒng)計(jì)的界面viewController繼承此類,對于使用者來說,只需要繼承一下子而已,不需要做額外的工作。但是現(xiàn)在繼承帶來的問題也是令人詬病的,它增加代碼的閱讀和理解負(fù)擔(dān),間接會增加維護(hù)成本;而且為了增加一個功能,而在類體系中增加一個結(jié)點(diǎn)實(shí)在無甚必要。我們需要的是一個不需要侵入和改變我們的類體系的一個方案。


類別+閉包+信號流

從需求的分析中我們看到了,就是基于幾個事件點(diǎn)進(jìn)行處理一下而已,所以用事件流的方式來處理非常合適。在 ReactiveCocoa 中,我們只需要在幾個信號上加點(diǎn)代碼而已。另外,為了讓使用者使用方便,我們將此統(tǒng)計(jì)功能抽象為一個函數(shù),像下邊用例:

// 一個統(tǒng)計(jì)界面ViewController的viewDidLoad中代碼

[self staticDurationForCurrentViewControllerwithViewName:@"設(shè)置界面"];

上邊代碼就是統(tǒng)計(jì)一下當(dāng)前界面(設(shè)置界面)的顯示時長。這個方法的實(shí)現(xiàn)如下:


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

相關(guān)閱讀更多精彩內(nèi)容

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