Обнаружение утечек в приборе работает путем консервативного сканирования памяти, поиска указателей и построения графика связей между распределениями. Если он находит какой-либо указатель (и) на объект в памяти, который может быть достигнут из глобальной переменной или переменной стека, то этот объект не может считаться утечкой.
Instruments не знает расположение или контекст указателя. Если бы вы работали с malloc (1024), и в этом [переработанном] фрагменте памяти оказалось несколько указателей, они бы учитывались, даже если вы никогда не будете снова обращаться с этими указателями как с реальными ссылками.
Итак, нет, утечки никогда не могут быть на 100% точными. Кроме того, существует гораздо больше способов утечки памяти, чем фактическая утечка. Если у вас был глобальный кеш, например:
NSMutableDictionary *myGlobalCache;
И вы должны были заполнить этот кеш, но никогда не сокращать его, это было бы эффективной утечкой памяти, и не было бы никакого способа, чтобы это все проявилось в Инструментах.
Я написал подробное обсуждение Анализ кучи , который связан и может представлять интерес.