NSURL *httpsURL = [NSURL URLWithString:@"https://example.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:httpsURL cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:5.0f];
self.connection = [NSURLConnection connectionWithRequest:request delegate:self];
[self.connection start];
while(something) {
// some code
}
在上面的代码中,代理(例如:willSendRequestForAuthenticationChallenge
)在while
循环完成之前不会执行。这种行为的原因是什么以及如何克服这个问题?我希望代表在后台执行。我怎样才能实现它?
提前致谢。
答案 0 :(得分:1)
不推荐使用NSURLConnection。使用NSURLSession。执行此操作时,将会话的delegateQueue
设置为后台队列。这样,您的委托消息就可以到达。现在,你阻止他们到达,因为他们想要到达主线程而他们不能。
然而,正如dgatwood所说,如果你正在做一些耗时的事情,可以阻止主线程,那也是错误的。如果你尝试那种东西,你的应用程序将被WatchDog进程杀死。