I have the following 2 methods:
-(void)authenticateUserToGoogle:(NSString *)userName withPassword:(NSString *)password {
NSString *URLstr = GOOGLE_CLIENT_LOGIN;
URLstr = @"http://www.google.com/ig/api?stock=AAPL";
NSURL *theURL = [NSURL URLWithString:URLstr];
NSURLRequest *theRequest = [NSURLRequest requestWithURL:theURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:100.0];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (!theConnection) {
NSLog(@"COuldn't register device information with Parking Server");
} else {
NSLog(@"Got a connection!!");
NSMutableData *_responseData = [NSMutableData data];
NSLog(@"respone_data = %@",_responseData);
}
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
NSInteger statusCode = [HTTPResponse statusCode];
if (404 == statusCode || 500 == statusCode) {
//[self.controller setTitle:@"Error Getting Parking Spot ....."];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:FALSE];
NSLog(@"GOT A 'FUCKED' STATUS CODE");
[connection cancel];
NSLog(@"Server Error - %@", [NSHTTPURLResponse localizedStringForStatusCode:statusCode]);
} else if (200 == statusCode) {
NSLog(@"GOT A 'OK' RESPONSE CODE");
}
}
If I call the authenticateUserToGoogle method as an instance method like this:
[self authenticateUserToGoogle:user withPassword:password]
I get the the following output:
2011-08-12 00:14:08.490 stcoks[81272:f203] Got a connection!!
2011-08-12 00:14:08.492 stcoks[81272:f203] respone_data = <>
2011-08-12 00:14:08.726 stcoks[81272:f203] GOT A 'OK' RESPONSE CODE
However, if I change the authenticateUserToGoogle method to be a class method by simply changed the "-" to "+" in the method signature and then call it like this:
[MasterViewController authenticateUserToGoogle:user withPassword:password]
I get the following output:
2011-08-12 00:14:08.490 stcoks[81272:f203] Got a connection!!
2011-08-12 00:14:08.492 stcoks[81272:f203] respone_data = <>
In other words it seems like the with the class method, the delegate method connection didReceiveResponse never gets called!!
Can anyone explain this behavior to me? Thanks!
When you start the NSURLConnection with delegate:self
, that sets up the delegate object which will receive the connection:didReceiveResponse:
message. If you use self
within a class method, this method will also be called as a class method.