第一个定时器是banner图的定时器,第二个定时器是在300秒后重新请求banner图的定时器,这两个定时器使用过程中需要注意的是,当打开第二个定时器时,需要先清空banner图的数据,然后关闭banner图的定时器,最后才去请求banner的接口。代码如下:
//关闭定时器
_bannerTime = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(timeUpdate) userInfo:nil repeats:YES];
- (void)timeUpdate
{
[_scrollArray removeAllObjects];
//[self.collectionView reloadData];
//关闭定时器
[self.timer invalidate];
[self requestBannerList];
}
还有一点是非常重要的是要记得去销毁定时器, 原来是在- (void)delloc去销毁定时器,但是发现在整个程序退出后发现控制器没有销毁,是因为定时器还留在控制器当中,主要是由于在退出程序后,程序没有收到销毁定时器的信息,会默认认为定时器留在控制器当中,这会造成程序重新启动后,定时器会连接启动两次,会有卡顿的问题,处理的办法是用通知来通知程序定时器已经销毁。
代码如下:
//定时器取消通知
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(invalidateTimer)
name:kNotificationInvalidateTimer
object:nil];
-(void)invalidateTimer
{
[self.timer invalidate];
//取消定时器
[_bannerTime invalidate];
}
- (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self name:kNotificationInvalidateTimer object:nil];
[self invalidateTimer];
NSLog(@"销毁%s",__FUNCTION__);
}