我有一个非常简单的方法,由performSelector调用:withObject:afterDelay:但无论我赋予afterDelay什么值,该方法总是在10秒延迟后触发 . 该方法调用URLRequest,在完成后调用另一个请求(不确定这是否有影响) .
我有:
-(void)connectionDidFinishLoading:(NSURLConnection*)connection {
[self performSelector:@selector(poll) withObject:nil afterDelay: 1];
}
.....
-(void)poll
{
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
....
NSURLConnection *connection = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
.....
}
无论我赋予afterDelay什么值,都会在10秒后调用该方法 . 关于可能导致这种情况的任何想法?
1 回答
您的NSURLConnectionDelegate是否在与主线程不同的线程上获取消息?如果是,则将您的消息发布到mainThread:
然后
PS:你可以用dispatch_after()更容易地做到这一点,但你没有提到块,所以没有去那里 .
PS:尝试将此添加到您的所有委托消息:
如果这不会导致您的应用程序崩溃,那么有些东西会阻塞我们的主runLoop - 主线程上的那个 - 所以您可能正在等待某个地方 . 在这种情况下,您的UI将完全没有响应 .