NSAutoReleasePool Утечка - PullRequest
       7

NSAutoReleasePool Утечка

1 голос
/ 04 января 2011

Может кто-нибудь сказать мне, почему NSAutoreleasePool протекает в этом коде.Я использую инструменты для проверки утечек, и этот код каким-то образом протекает.Кто-нибудь может направить меня в правильном направлении.У меня точно такой же код в другом месте, и он работает нормально.

ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:self.url];
 [request setDelegate:self];

 NSOperationQueue *queue = self.downloadQueue;
 [queue addOperation:request];
 [request release];

Ответы [ 2 ]

2 голосов
/ 04 января 2011

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

NSAutoreleasePool* pool = [NSAutoreleasePool new];
// Your code goes here
[pool drain];

Кроме того, имейте в виду, что если вы зацикливаетесь внутри нового / сливного блока NSAutoreleasePool, вы будете протекать до тех пор, пока не достигнете утечки. В результате, если вы выделяете слишком много памяти внутри цикла, вашему приложению все еще может не хватать памяти. В этом случае вам может понадобиться создать и использовать второй NSAutoreleasePool каждый раз в цикле (или, возможно, каждый n-й раз в цикле, чтобы избежать некоторых издержек).

1 голос
/ 04 января 2011

Вы запускаете этот код во вторичном потоке? Если да, то вы настроили пул автоматического выпуска при входе?

...