Почему этот код вызывает утечки? - PullRequest
0 голосов
/ 05 февраля 2011

В общей сложности Noob здесь впервые на этом форуме.

Я пишу свое самое первое приложение для iPhone.Рассматриваемый код должен заполнить мой UITableViewCell в методе cellForRowAtIndexPath.

Когда я запускаю свое приложение с включенным Leaks Instrument, часть с утечкой указывает на эту часть моего кода.Я читал об управлении памятью в различных книгах и публикациях на этом сайте, и, насколько мне известно, приведенный ниже код, кажется, соответствует требуемым рекомендациям по кодированию для размещения / выпуска.Однако инструмент «Утечки» все еще указывает на этот конкретный раздел.Я просто не понимаю почему.

Буду признателен за вашу помощь.

ModelClass * myModelData = [myTempDataArray objectAtIndex:[indexPath row]];

NSString * myURL = [[NSString alloc] initWithFormat:@"%@/images/%@", SERVER_URL, [myModelData publisherLogoFileName]];
NSURL * imageURL = [[NSURL alloc] initWithString:myURL];
[myURL release];
[[cell productImageM] setUrl:imageURL];
[imageURL release];
[[self objMan] manage:[cell productImageM]];

return cell;

Ответы [ 2 ]

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

Инструмент "Утечки" не сообщает вам, где объект должен был быть освобожден, он сообщает вам, где он был выделен.

Этот фрагмент кода выглядит нормально;Вы владеете myURL достаточно долго, чтобы использовать его для создания imageURL, а затем выпустить его.Вы передаете imageURL для productImageM ячейки, а затем освобождаете его.Затем вы выполняете некоторые манипуляции с объектами, которые вам не принадлежат.

По некоторым предположениям, тип объекта, возвращаемого [cell productImageM], сохраняет свое свойство Url и впоследствии теряет его.

0 голосов
/ 06 февраля 2011

Вы можете попробовать использовать опцию Build & Analyze в меню Build.В целом, это должно указывать точную линию утечки.

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