ログイン方法があります。メソッド内で NSURLConnection を使用してログインし、NSData 応答を返したいと考えています。問題は、接続が実際にデータを取得する前に NSData を返すことです。
- (NSData*)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[responseData appendData:data]; //responseData is a global variable
NSLog(@"\nData is: %@", [[[NSString alloc] initWithData:responseData
encoding:NSUTF8StringEncoding]autorelease]);//this works
isLoaded = YES; //isLoaded is a BOOL
}
- (NSData*)login:(NSString*)username withPwd:(NSString*)password{
isLoaded = NO;
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
delegate:self];
if(connection){
NSLog(@"Connected");
}
while(isLoaded = NO){
[NSThread NSSleepForTimeInterval: 1];
}
isLoaded = NO;
return responseData;
}
プログラムは while ループでスタックしますが、while ループがなければ、プログラムはサーバーからデータを取得できます。デリゲート メソッドが変更する前に、メソッドが responseData を返すように見えるだけです。
だから私の質問は、サーバーがそれを処理した後にのみメソッドがresponseDataを返すようにするにはどうすればよいですか?