Загадочная утечка памяти при добавлении изображения в контакт на IOS - PullRequest
3 голосов
/ 17 февраля 2011

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

NSData *dataRef = UIImagePNGRepresentation([UIImage imageNamed:@"Icon.png"]);
ABPersonSetImageData(newRecord, (CFDataRef)dataRef, nil);

Когда я исключаю вышеприведенные строки, я в порядке.

dataRef упоминается только здесь во всей программе. Я попытался CFrelease-in как тест, но это вызывает сбой из-за ссылки на освобожденный объект.

Я попытался объединить все в одну строку,

ABPersonSetImageData(newRecord,(CFDataRef) UIImagePNGRepresentation([UIImage imageNamed:@"Icon.png"]), nil);

но я получил те же результаты.

В первый раз я бы почти ожидал утечку, поскольку известно, что Imagenamed кэширует объект изображения, и сообщалось, что вызов произошел до утечки до iOS4, но я не ожидаю продолжающихся утечек.

Есть идеи? подобные вопросы поднимались здесь раньше несколько раз, но никто, похоже, не получил ответа.

1 Ответ

1 голос
/ 17 февраля 2011

Я думаю, вам не нужно беспокоиться об этом объекте.Так как UIImagePNGRepresentation вернет вам объект autoreleased, то утечки памяти не будет.Поскольку dataRef является autoreleased объектом, вы не должны освобождать его вручную.

...