CFNetwork / NSURLConnection утечка - PullRequest
       13

CFNetwork / NSURLConnection утечка

10 голосов
/ 13 марта 2010

Запуская инструменты на устройстве, я периодически испытываю утечку памяти в CFNetwork размером ровно 3,5 КБ, ответственный фрейм - HostLookup_Master :: HostLookup .... "

Я прочитал несколько вопросов по этой проблеме и отдельно попробовал следующее, чтобы исправить утечку:

  1. Включено следующее в ApplicationDidFinishLaunching:

    NSURLCache * sharedCache = [[NSURLCache alloc] initWithMemoryCapacity: 0 diskCapacity: 0 diskPath: nil]; [NSURLCache setSharedURLCache: sharedCache]; [релиз sharedCache];

  2. Указывается в URL-запросе не загружать из локального кэша.

Ничего из вышеперечисленного не сработало. Мой класс, который создает экземпляры соединений, не протекает, поскольку его экземпляры освобождаются после загрузки данных. Я подтвердил это, подтвердив, что живые объекты этого класса равны 0 с помощью инструментов.

Буду очень признателен за любые советы по устранению этой утечки.

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Похоже, что Apple может быть осведомлена о утечке в 3.5k, связанной с использованием CFNetwork, и, возможно, уже сообщалось как ошибка .

1 голос
/ 18 июня 2010

То, что утечка памяти 3,5 КБ звучит знакомо, если бы иметь дело с с потоками :

@implementation MyClass
+ (void)login
{
    //MyClass *this = [[MyClass alloc] init]; // MEMORY LEAK
    MyClass *this = [[[MyClass alloc] init] autorelease];
    [NSThread detachNewThreadSelector:@selector(anotherThread)
                             toTarget:this
                           withObject:nil];
}

- (void)anotherThread {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    [self doStuff];
    //[self release]; // MEMORY LEAK
    [pool release];
}
@end

При каждом входе в систему создается утечка размером 3,5 КБ. Использование autorelease решило проблему .

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