вот в чем проблема, сегодня у меня были проблемы с отладкой моего проекта, консоль сказала: [CFString release]: message sent to deallocated instance 0x12345
Я нашел проблему, а также решение, но я не уверен, почемупроизошла ошибка.
-(BOOL) sendRequest:(NSString *) message {
//xml -> data
NSString *xml = [self toXML:message ];
NSData *data = [xml dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSMutableURLRequest *request=[[NSMutableURLRequest alloc] init];
[request setURL: [NSURL URLWithString:url] ];
[request setHTTPMethod:@"POST"];
[request setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [data length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:data];
// some code NOT related to the connection... (UI stuff)
//finally.. send the request
NSURLResponse *theResponse;
NSError *error;
NSData *resp=[NSURLConnection sendSynchronousRequest: request returningResponse:&theResponse error:&error];
//[data release];
//[xml release]; <-- if i uncomment this; i got the memory issue
if ( resp == nil ){
return NO;
}
// some code that updates the UI
return YES;
}
Итак, мой вопрос: почему выпуск xml: [xml release]
провоцирует ужасную утечку памяти ?.Я подумал так: поскольку я больше не использую контент XML, хорошей практикой будет его выпуск.