有个需求,统计一些界面的显示时长,并且考虑锁屏后台等因素。 有了需求,那么我们需要的是下边几种情况
1. 从viewDidAppear 到 viewDidDisappear
2. 从applicationDidBecomeActive 到applicationWillResignActive
继承大法
一种方式是自定义一个UIViewController类,然后所有统计的界面viewController继承此类,对于使用者来说,只需要继承一下子而已,不需要做额外的工作。但是现在继承带来的问题也是令人诟病的,它增加代码的阅读和理解负担,间接会增加维护成本;而且为了增加一个功能,而在类体系中增加一个结点实在无甚必要。我们需要的是一个不需要侵入和改变我们的类体系的一个方案。
类别+闭包+信号流
从需求的分析中我们看到了,就是基于几个事件点进行处理一下而已,所以用事件流的方式来处理非常合适。在 ReactiveCocoa 中,我们只需要在几个信号上加点代码而已。另外,为了让使用者使用方便,我们将此统计功能抽象为一个函数,像下边用例:
// 一个统计界面ViewController的viewDidLoad中代码
[self staticDurationForCurrentViewControllerwithViewName:@"设置界面"];
上边代码就是统计一下当前界面(设置界面)的显示时长。这个方法的实现如下:
网友评论