2012-05-03 8 views
0

У меня есть утечка памяти с кодом ниже. Где self.firstURLConn является @property (неатомным, сохраняется).Проблема с распределением объекта и выпуском ios

NSMutableURLRequest* req = [[NSMutableURLRequest alloc] initWithURL:urlcachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0f]; 

self.firstURLConn = [[[NSURLConnection alloc] initWithRequest:req delegate:self] autorelease]; 

[req release];//memory leak here and with self.firstURLConn 

Почему память утечки здесь

ответ

0

firstURLConn сохранит свой REQ, REQ будет освобождаться только тогда, когда firstURLConn выпустит REQ.

1

Вы когда-нибудь запускали Продукт> Анализировать? Если вы это сделали, пожалуйста, покажите нам журнал проблем с утечкой памяти.

Они не только расскажут о строке вашего кода, которая имеет проблему с утечкой памяти, но и покажет шаг вашего кода, который вызывает проблему.

Я предлагаю вам использовать инструмент Инструмент с протекающим инструментом. Он покажет подробную информацию о вашей проблеме с кодом.

EDIT: req переменная миссия autorelease. из-за req сохранился 2 раз. изменить код, как этот

NSMutableURLRequest* req = [[[NSMutableURLRequest alloc] initWithURL:urlcachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0f] autorelease]; 

self.firstURLConn = [[[NSURLConnection alloc] initWithRequest:req delegate:self] autorelease]; 

[req release];//memory leak here and with self.firstURLConn 

Из-за вашего firstURLConn заявил в сохраняют свойства. Таким образом, метод dealloc, вы должны установить nil этому свойство

- (void)dealloc 
{ 
    self.firstURLConn = nil; 
    [super dealloc]; 
} 
+0

В моем вопросе я упомянул, где происходит утечка памяти. – Mann

+0

Позвольте мне проанализировать ваш полный код. Пожалуйста, покажите свой класс проблем .h и .m code. – Sakares

+0

Я уже отредактировал свой ответ, попробуйте настроить код. – Sakares

0

Поскольку метод делегата возвращается асинхронно (когда-то в будущем), вы должны освободить NSURLConnection внутри метода делегата. Удалите авторекламу и добавьте выпуск в обработанные и неудачные методы делегирования.

Смежные вопросы