2012-06-17 3 views
1

У меня есть скрытые UITextField, что, когда пользователь должен ввести символ с клавиатуры отправляется:becomeFirstResponder памяти Проблемы

[txtField becomeFirstResponder] 

Это текстовое поле имеет событие на редактирование изменилось, что затем вызывает функцию обрабатывать то, что было введено, как мне это нужно.

Затем пользователь выбирает ладно кнопку, которая вызывает следующее:

txtBox.text = @""; 

[txtBox resignFirstResponder ]; 

Я отслеживаются некоторые проблемы ПАМЯТЬ весь путь вплоть до линии [txtField becomeFirstResponder]. Когда это вызывается, использование памяти в приложениях на двоих удваивается, и я получаю предупреждение о памяти (даже при запуске кода). Если я удалю его (у меня нет клавиатуры, конечно!), Но проблема с памятью пропадает. Я прочитал и попробовал несколько подходов, таких как удаление клавиатуры на уровне делегата, но без успеха. Я почти готов к созданию собственной клавиатуры.

Несмотря на то, что я могу, вероятно, работать с этим увеличением, если он будет правильно выпущен после того, как я уберу клавиатуру, но это не так. Отпечаток приложения просто становится тяжелее и тяжелее, и для жизни меня я не могу понять, почему.

Первый вопрос: возможно ли, что это вызывает у меня проблему? Я предполагаю, что это маловероятно.

Если нет, то какие-либо предложения, где искать/почему я получаю такое быстрое увеличение?

Heres скриншот инструментов - красная линия указывает на то, где я называю becomeFirstResponder: http://i.stack.imgur.com/E7PaU.png (они не будут позволять мне загрузить его - извините!)

ответ

0

Это не хороший способ для отслеживания утечек памяти/проблемы. Если есть утечка памяти, приборы обнаруживают утечку, и вы можете исправить ошибку. Вы не должны предполагать, что ОС освободит память только потому, что вы закрыли клавиатуру (во всяком случае, она, вероятно, лениво загружена и кэширована).
Хотя у меня никогда не было проблемы с этим, возможно, что ваш объем памяти увеличивается, когда вы показываете клавиатуру. Вы не сказали, сколько памяти действительно используется, поэтому я предполагаю, что это небольшое приложение и удваивает, что при открытии клавиатуры все должно быть хорошо.
ОС кэширует все замороженные открытые приложения, поэтому память всегда плотная. При получении предупреждений о памяти ясно, что вы можете, и пусть ОС справляется с остальными. При необходимости он убьет фоновые приложения. Это не значит, что с вашим приложением что-то не так.

+0

Спасибо за ответ. приложение получало предупреждения о памяти, даже если утечек не было. Я пытался отбросить след и проследить большую часть его на клавиатуре, которая, как вы говорите, не убирала после себя и просто кешировала. Чтобы контролировать это, я просто создал простую клавиатуру с необходимыми мне символами. Это позволило мне контролировать память соответственно и был бонусом, так как теперь мне не нужно проверять ввод с реальной клавиатуры. Вероятно, это не лучший подход, чтобы убежать от проблемы, но работает с другими добавленными бонусами. Примите ваш ответ за информацию. Ральф – Ralphonzo

Смежные вопросы