Инструмент «Утечки» показывает вам память, которая не будет свободной в обычном режиме работы приложения (поскольку на нее нет ссылок). Само по себе это не важно, оно будет бесплатным при выходе из приложения. Большая часть кода инфраструктуры будет выделять и оставлять эти очень маленькие куски памяти выделенными. Я понятия не имею, являются ли они ошибками или важными для работы приложения. Как бы то ни было, мы должны признать, что они абсолютно нормальные.
Утечки идентифицируют эти куски памяти как «Утечки», и это звучит плохо, но на самом деле это не «Утечки», которые есть у инструмента, чтобы помочь вам идентифицировать.
«Настоящие» утечки заключаются в коде, который можно запускать много раз и который выделяет некоторую память, которая никогда не освобождается, поэтому со временем будет потребляться все больше и больше памяти, пока вся память не будет использована и ваше приложение не выйдет из строя.
Так что, если у вас есть приложение, которое независимо от того, как долго вы его используете, или независимо от того, как вы его используете, оно «пропускает» 128 байт в рамках Apple, и вам обычно не о чем беспокоиться.
Однако, если у вас есть приложение, которое говорит, что каждый раз, когда вы нажимаете кнопку, оно выделяет новую строку, которая никогда не высвобождается - независимо от того, сколько байт строки - если пользователь нажимал кнопку достаточно раз, это потребляло бы все память, доступная для приложения и в конечном итоге сбой его. Это та утечка, за которой нужно следить.
Прибор для обнаружения утечек реально не может определить разницу между этими двумя типами, но вы должны уметь это делать. Например, вам может понадобиться объект типа singleton, для которого существует только один экземпляр, и который должен существовать в течение всего времени жизни вашего приложения. Вы создаете объект при запуске приложения и реально вам никогда не нужно освобождать этот объект, его можно убить при выходе из приложения. Утечки помечают это как утечку, и некоторые другие разработчики, с которыми вы работаете, которые предполагают, что это означает, что вы не знаете, что делаете, будут бегать к вашему боссу, как маленький ребенок, и говорить: «Он пишет действительно дырявый код, и это очень плохо ". И ваш начальник, который не программист, воспримет его всерьез, потому что это звучит плохо, и в любом случае он скинул 2.2 в CS из авторитетного университета, поэтому он должен знать, о чем говорит. Когда это действительно разумно и именно то, что вы хотели сделать.
Итак, используйте инструмент Leaks, чтобы найти ошибки в вашем коде, которые испортят ваше приложение. Не беспокойтесь о каждом байте, обнаруженном «Утечка» в структуре Apple.