定时器的使用问题

来源:互联网 发布:java 枚举 继承 编辑:程序博客网 时间:2024/06/11 20:33

     第一个定时器是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__);}

0 0
原创粉丝点击