Прежде всего, крайне важно, чтобы использование скобок и скобок [] и {} соответствовало универсальному стандарту. ОК, просто шучу.
Рассматривая утечки, вы можете предположить, что утечка связана с проблемой в вашем коде, но это не 100% ошибки. В некоторых случаях может быть что-то происходящее в коде Apple (задыхаясь!), Который виноват. И это может быть что-то, что трудно найти, потому что это не отображается как объекты какао. В прошлом я сообщал об ошибках в Apple.
Утечки иногда трудно найти, потому что подсказки, которые вы находите (например, сотни строк просочились), могут произойти не потому, что те объекты, которые непосредственно ответственны за строки, протекают, а потому, что что-то протекает этот объект. Часто вам приходится копаться в листьях и ветвях протекающего «дерева», чтобы найти «корень» проблемы.
Предотвращение: одно из моих главных правил - действительно, действительно, действительно избегать выделения объекта, просто не выпуская его автоматически прямо на месте. Везде, где вы размещаете / инициализируете объект, а затем освобождаете его позже в блоке кода, вы можете ошибиться. Либо вы забудете освободить его, либо создадите исключение, чтобы выпуск никогда не вызывался, либо вы поместили оператор return для досрочного выхода где-то в методе (чего я также стараюсь избегать).