我有一个登录方法。在我使用 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 ?