Как выпустить NSURLConnection в iPhone (Цель C) - PullRequest
0 голосов
/ 14 апреля 2011

Я использовал эту строку кода во многих местах моего проекта под различными функциями:

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest: theRequest delegate:self];

Теперь я получаю обычное предупреждение "Неиспользуемая переменная theConnection".Я также знаю, что из-за утечки памяти.

Может использовать следующий код?

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest: theRequest delegate:self];
[theConnection release];

Если я освобожу объектConnection, будут ли проблемы в методах делегатов, таких как didReceiveData, connectionDidFinishLoading и т. Д.?

А если приведенное выше утверждение может решить проблему утечки памяти без проблем, как избавиться от предупреждения «Неиспользуемая переменная бла-бла ..»?

Ответы [ 2 ]

1 голос
/ 14 апреля 2011
Now I'm getting an usual warning "Unused variable theConnection". I also know that its leaking memory.

Причина получения предупреждения, потому что вы не используете объект theConnection,

, если вы не хотите, чтобы функция delgate не вызывалась для этого экземпляра, установите delegate как nil вместо self

[[NSURLConnection alloc] initWithRequest:request delegate:nil];

РЕДАКТИРОВАНИЕ:

В вашем классе .h:

NSURLConnection* m_URLConnection;

In .m класс:

-(id) init
{
  m_URLConnection = [[NSURLConnection alloc] initWithRequest:request delegate:nil];
}
-(void) dealloc
{
  [m_URLConnection release];
  m_URLConnection = nil ;
}
0 голосов
/ 14 апреля 2011

Я думаю, вы можете использовать это

[[NSURLConnection alloc] initWithRequest:request delegate:self];

Я не думаю, что это покажет предупреждение

Или я думаю, что вы также можете попробовать сделать объект соединения в качестве переменной экземпляра класса.

theConnection = [[NSURLConnection alloc] initWithRequest: theRequest delegate:self];

Вы можете избежать утечки, выпустив theConnection на основе вашего кода в dealloc или другого метода

...