Я ненавижу иметь утечки памяти и обычно горжусь собой, бла, бла, бла.Помогите!
Утечки у меня не слишком большие (несколько К максимум), но я хочу наверняка их устранить.Существует две категории утечек, и у меня есть несколько снимков экрана каждого из инструмента Instruments Leaks.
Первая - это просто странная штука с Java / Web, которая происходит в течение 10 секунд после запуска моего приложения: независимо от того, чтокод ветки беру.Это как что-то происходит на заднем плане, что вызывает это.У меня есть пример кода от уважаемых авторов программ для iPhone, и они делают то же самое, поэтому я не слишком беспокоюсь о 64 байтах, которые я теряю во время запуска приложения.Эта утечка произойдет задолго до того, как я создам любую из моих веб-форм, таких как инструменты MapKit, например, обратный геокодер ... но я использую их позже в своем коде.
Вторая, однако, коварна, и ячувствую себя дураком из-за того, что не в состоянии отследить это ... потому что заставить это случиться так ПРОСТО.Все, что я делаю, это создаю UITextField в Интерфейсном Разработчике и использую его, как всякий раз, когда я когда-либо делал прежде.Это происходит на любом UITextField, который я создаю, когда на iPhone появляется виртуальная клавиатура.И утечки памяти довольно существенны (сотни байтов за раз);предположительно из графики, связанной с созданием экранных кнопок.
Итак, для ясности, когда я касаюсь любого из этих текстовых полей, появляется виртуальная клавиатура, и я теряю несколько сотен (или больше)байт.Я даже ничего не печатаю, не назначаю переменные и т. Д. Между прочим, это происходит только в первый раз, когда виртуальная клавиатура всплывает в текстовом поле.(Так что мои утечки «несколько сдержаны».) (Это то, что они сказали о недавней нефтяной скважине, а?)
Вы спросите, что отличается от контроллера, которому принадлежат эти поля UITextFields.Ну, единственное, о чем я могу думать, это то, что это динамически создаваемый UIViewController, который управляется UINavigationController.
Поскольку в обоих этих случаях мой код никогда не отображается в стеке, я неуверен, что мои следующие шаги должны быть.Я запустил новый статический анализатор XCode и, несмотря на пару предупреждений, они представляют собой доброкачественную красную сельдь.
Итак, я ищу совет о том, какими должны быть мои следующие шаги.(Я начал процесс комментирования кода, перехода к резервным копиям и т. Д.)
Снимки экрана с приложенным инструментом "Утечки".
Похоже, я могу включить только одну ссылку, пока не получунекоторые точки повторения.Я покажу последнюю утечку.
Снимок экрана Memleak 2: текст ссылки
-Pete
PS Я использую последний Xcode (3.2.3) на сегодняшний день с самой новой версией 4.0.2 iOS.