2

У меня проблема с потреблением памяти в моем приложении. Надеюсь, вы можете мне помочь. У меня есть контроллер навигации, возможно, 10 контроллеров для перемещения вперед или назад, я использую инструменты для проверки для распределения памяти (также используется профилировщик mtouch), когда я перемещаюсь вперёд (в первый раз), очевидно, что память, потребляемая приложением, увеличивается. Но когда я нажимаю на стандартную кнопку возврата навигационного контроллера, память остается равной той же сумме и хуже всего, если я снова пойду вперед, память увеличится больше (то есть: homeVC 10mb, VC1 = 10.5mb, вернуться к homeVC = 10.5 mb, перейти к VC1 = 11mb), да, память увеличивается, пока я все еще перемещаюсь через VC , В этом случае у меня есть следующие вопросы:Проблемы с диспетчером памяти памяти Monotouch

  • Каково поведение приложения на стандартной кнопке Back на навигационном контроллере (он выполняет PopViewControllerAnimated?).
  • PopViewControllerAnimated и другие методы Pop NavController должны освобождать память, потребляемую диссонирующим VC?
  • Если методы Pop для navcontrollers не освобождают память приложения, когда я должен избавиться от исчезающих VC, чтобы избежать потребления столь большого количества памяти? (Я хочу знать, как лучше работать с памятью в приложениях с одним касанием, возможно, использовать метод DidReceiveMemoryWarning? Или есть другие места, когда я могу управлять выпуском памяти моего приложения).

Заранее благодарим за вашу помощь.

ответ

1

Это звучит подозрительно похоже на эту ошибку: https://bugzilla.xamarin.com/show_bug.cgi?id=1889

Вы можете работать вокруг него, запрашивая в ViewControllers свойство навигации контроллера один раз в то время.

+1

Можете ли вы подробно рассказать об этом? Как/почему это помогает? Где получить свойство ViewControllers, как часто ... какой-то код был бы приятным. Благодарю. – Alex42

+0

@ Alex42: Отчет об ошибке объясняет, почему это помогает. Как часто: если вы можете определить, когда вызывается контроллер просмотра, тогда вы должны это сделать. В противном случае «раз в то время» действительно зависит от вашего приложения - я бы не волновался, потому что он будет течь только до тех пор, пока вы поп, но не нажимаете контроллеры просмотра, и вы не можете появляться бесконечно, не нажимая один раз в в тоже время. –

+0

Хорошо, спасибо за ваш совет. – Alex42

0

Можете ли вы опубликовать код, который используете, когда вы выделяете и нажимаете свой VC?

Что я угадываю, так это то, что вы не выпускаете его после его выделения, поэтому, когда NavigationController освобождает его, когда вы нажимаете кнопку «Назад», счетчик сохранения остается +1.

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