iOS で http クライアントからデータを取得する際に問題が発生しています。これはクライアントクラスの私のコードです
@synthesize receivedData;
- (void) HTTPRequest1 :(NSURL *) url {
NSURLRequest *req = [NSURLRequest requestWithURL: url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:req delegate:self];
if (connect) {
receivedData =[NSMutableData data];
}
else {
}
}
-(void) connection:(NSURLConnection*) connection didReceiveResponse:(NSURLResponse *)response{
[self.receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[self.receivedData appendData:data];
//receivedData
}
- (void)connection:(NSURLConnection *)connection
didFailWithError:(NSError *)error
{
NSLog(@"Connection failed! Error - %@ %@",
[error localizedDescription],
[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);
}
しかし、このクライアントからデータを取得しようとすると:
NSURL *url = [NSURL URLWithString:@"http://ya.ru"];
MAHTTPClient *client = [MAHTTPClient alloc];
[client HTTPRequest1:url];
NSMutableData *data = client.receivedData;
data 変数は空ですが、データは受信されました (NSLog は数バイトのデータをダウンロードしたという事実を示しました)。問題は、サーバーからまだダウンロードされていないときにアプリがデータを取得しようとしていることです (200 ミリ秒の差があります) connectionDidFinishLoading が呼び出されるまでメインスレッドを待機させる方法はありますか?