iphone: проблема утечки памяти: сообщение отправлено на освобожденный экземпляр, почему? - PullRequest
0 голосов
/ 19 августа 2010

вот в чем проблема, сегодня у меня были проблемы с отладкой моего проекта, консоль сказала: [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, хорошей практикой будет его выпуск.

1 Ответ

2 голосов
/ 19 августа 2010

XML здесь передается параметр. Вы не владеете им, и поэтому не должны его выпускать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...