我有一个类(getAndPlaySong),它从服务器获取文本文件,从文本中获取特定的字符串,并使用字符串(URL)从音乐文件中获取音乐文件服务器。第一次获取文本文件的服务器调用很快,所以我实现了同步。第二个需要更长的时间,我想在发生时更新显示。检测异步连接何时完成
我希望方法在继续之前等待异步请求完成。我试图把一个BOOL在connectionDidFinishLoading方法:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"Succeeded! Received %d bytes of data",[_receivedData length]);
[AppDelegate playAudioWithData: _receivedData];
_dataIsReceived = YES; //BOOL
// release the connection, and the data object
[connection release];
[_receivedData release];
}
然后把一个while循环在getAndPlaySong方法:
[self startRequest: correctSongURL]; starts the request asynchronously
while (!_dataIsReceived) {
//do stuff
}
的结果是,当它达到循环应用程序挂起。循环永远不会终止,我永远不会得到“成功...”输出。我有点困惑,并会感激一些意见。
你能在while循环内显示代码吗?你想在URL加载的时候做什么?当你说,“我想更新显示的时候” - 你到底想做什么?一次性动作,还是连续的? –
它是有道理的,它会挂起,你无限循环。您需要创建一个将在请求完成时触发的回调。研究使用通知系统。 – Kaili