UI活动后NSTimer加速

时间:2012-11-23 05:32:02

标签: iphone ios5 ios6 nsurlconnection nstimer

我使用NSURLConnection每11秒使用NSTimer发出异步http请求。 NSTimer在主运行循环上运行。请求的超时时间为10秒。 NSTimer效果很好,直到我在应用上增加了UI活动(例如点击UIButtons,经常解除UIAlertViews)。

在此之后NSTimer加速并像while循环一样运行而没有任何延迟。这会在应用程序中产生很多问题,因为我无法正确处理连接响应。

1 个答案:

答案 0 :(得分:1)

问题是你在按钮操作中声明了一个NSTimer ...现在每次按下这个按钮时,NSTimer间隔被编译到它之前的间隔,结果是它被调用两次......下次它的频率是往前的两倍......等等。

执行此操作的最佳方法是在.h文件中定义NSTimer,然后每次在.m文件中使用代码时首先调用它,检查它是否已经存在,如果已经失效并释放它。

  if(myTimer){
        [myTimer invalidate];
        [myTimer release]; 
  }
  myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timeInterval) userInfo:nil repeats:YES];