我使用NSURLConnection
每11秒使用NSTimer
发出异步http请求。
NSTimer
在主运行循环上运行。请求的超时时间为10秒。
NSTimer
效果很好,直到我在应用上增加了UI活动(例如点击UIButtons
,经常解除UIAlertViews
)。
在此之后NSTimer
加速并像while循环一样运行而没有任何延迟。这会在应用程序中产生很多问题,因为我无法正确处理连接响应。
答案 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];