I have a question on the topic of memory management. When I create a
NSMutableURLRequest
and I release it, after the method return the application crash.
If I remove the line with release on NSMutableURLRequest
the application works. But it let memory leak.
What´s wrong?
This is the code:
- (NSString *) callServerWhaitReturn {
NSMutableURLRequest * theRequest = [ NSMutableURLRequest requestWithURL: [NSURL URLWithString: self.internalUrl] cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 60.0];
[theRequest setHTTPMethod: @"POST"];
[theRequest setHTTPBody:[[NSString stringWithFormat:@"p1=%@", self.parameters] dataUsingEncoding: NSASCIIStringEncoding]];
NSURLResponse * response;
NSError * error;
NSData * result = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: &response error: &error];
NSString * toReturn = [[[NSString alloc] initWithData: result encoding:NSASCIIStringEncoding] autorelease];
NSLog(@"%@", toReturn );
[theRequest release];
if (response) {
[response release];
}
if (result) {
[result release];
}
[toReturn autorelease];
return toReturn;
}
requestWithURL:cachePolicy:timeoutInterval:
returns an autoreleased object. If you haven't retained it, you shouldn't be releasing it.
Here are the memory management rules.