我有一个登录方法。 在使用 NSURLonconnection 登录的方法中, 我想要返回 NSData 响应。 问题是, 在连接实际获得数据之前, 我返回 NSData 。
- (NSData*)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[responseData appendData:data]; //responseData is a global variable
NSLog(@"
Data 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;
}
程序在循环时被卡住, 但是如果没有循环, 程序可以从服务器上检索数据, 只是方法似乎返回响应数据, 在代表方法改变它之前 。
所以,我的问题是,我怎样才能做到, 才能让这个方法在服务器完成后才会返回响应数据?