означают ли записи в таблице профилей XCode «Утечка блоков» определенную утечку? - PullRequest
2 голосов
/ 23 мая 2011

означают ли записи в таблице профилей XCode "Leaked Blocks" определенную утечку?

Это означает, что я запускаю свое приложение для iPhone под профилировщиком, а не смотрю информацию о просочившихся блоках. так что есть несколько строк NSDate в верхней части моего списка. Если я нажму на одну из этих строк, я смогу перейти к фрагменту кода, о котором идет речь.

Итак, я хочу подтвердить, означают ли все экземпляры записей в таблице «Leaked Blocks» реальную утечку, для решения которой требуется обновить / исправить код?

ПРИМЕЧАНИЕ. - Одна из причин, по которым я спрашиваю, состоит в том, что код, который я разместил здесь должен ли я выпустить NSDate в приведенном ниже коде? например, был из кода, который профилировщик поднял для меня в разделе "Утечка" Блоки ", однако код (см. Этот пост) был рассмотрен другими, и они говорят мне, что все в порядке.

1 Ответ

2 голосов
/ 23 мая 2011

означают ли записи в таблице профилей XCode "Leaked Blocks" определенную утечку?

да.

утечки оцениваются ленивым способом. Утечки не гарантируют, что перехватят все утечки, потому что он фактически не записывает все ссылки - он просто сканирует память процесса (включая стеки и регистры) на наличие паттернов (например, значение указателя) активных выделений.

man leaks предоставит вам подробности реализации, а раздел WEAKNESSES подтвердит мой ответ на ваш вопрос и даст пример обстоятельства, при котором утечки не будут обнаружены.

если вы управляете своими распределениями по-настоящему запутанным способом (например, арифметика / смещения указателей), вы можете фактически обойти систему и ввести ложные срабатывания - не делайте этого =)

когда вы публикуете код в SO, и люди говорят вам, что это правильно, они означают, что программа, которую вы разместили , является правильной - утечка (в данном случае дисбаланс подсчета ссылок) вводится в другом часть вашей программы. то есть возвращаемый вами указатель (newDate в ссылке) неправильно подсчитывается вызывающим абонентом или тем, кому вызывающий передает его.

Все инструменты

записывают все подсчеты ссылок для вас - в случае, если статический анализ не возвращает никаких проблем.

в частности, инструменты показывают вам, где было выделено выделение / объект создан .

надеюсь, это поможет.

...