2012-08-29 37 views
0

我想通过使用NSURLConnection的HTTP获取图像。我在后台执行选择iOS的ObjC网络和选择器在后台

[self performSelectorInBackground:@selector(loadingDaemon) withObject:nil]; 

,我做这个

NSString *fullImageURL = [NSString stringWithFormat:@"http://%@/%@", baseURL, currentlyLoadingImage]; 
NSURL *imgURL = [NSURL URLWithString:fullImageURL]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:imgURL]; 
request.timeoutInterval = 10; 
NSURLConnection *newConnection = [NSURLConnection connectionWithRequest:request delegate:self]; 

我设置NSURLConnection的”授人以自我和实现方法

connection:didReceiveResponse: 
connection:didReceiveData: 
connection:didFailWithError: 
connectionDidFinishLoading: 

此外,我记录每一个方法调用和条件分支。但是上面的4个函数从来都不会被调用。请你能解释我为什么?

+0

我怀疑你正在创建的URL包含特殊字符而没有被转义,所以它是无效的。 – 2012-08-29 20:05:15

+0

如果在方法结束时说'[[NSRunLoop currentRunLoop]运行]'会发生什么? –

+1

只是你知道,使用NSURLConnection的异步加载的一个主要原因是你可以在主线程上完成所有这些工作,而不必将其作为背景。 –

回答

0

你正在创建的NSURLConnection是在后台执行这些操作,所以不应该有必要在后台执行它,也是它不适合你的原因。你可以使用NSURLConnection sendAsynchronousRequest来调用你的选择器,或直接调用该函数。

+0

问题是我必须在其他线程运行我的ImageLoader类,它像守护程序一样工作。如果我在后台执行NSURLConnection请求,是否正在等待回复在与守护进程相同的线程中运行? – JINGE

+0

我不认为他们会互相影响,但如果他们这样做,然后运行你有什么作为同步的请求,将工作。你只是不能做一个在后台启动的异步请求。 – rooster117