iPad View Controller Управление памятью - PullRequest
0 голосов
/ 19 декабря 2010

В моем приложении для iPad есть 3 контроллера просмотра. Когда появился первый, Activity Monitor в Instruments сказал мне, что память приложения была 25 МБ. После вызова [self presentModalViewController] появился новый контроллер представления, объем памяти увеличился до 50 МБ, а затем третий - 70-75 МБ.

Какое лучшее управление памятью контроллера представления для разработки iPad? Я всегда получаю предупреждение о памяти сейчас, когда я на реальном iPad.

Спасибо заранее. Я извиняюсь за мой английский, так как это не мой родной язык. :)

Ответы [ 3 ]

1 голос
/ 19 декабря 2010

iPad имеет только 256 МБ ОЗУ, что вдвое меньше, чем у iPhone 4.

Кажется, что ваши контроллеры представления загружают много ресурсов или выделяют много памяти где-то еще.Вы должны быть в состоянии выяснить, где именно выделяется память с помощью инструмента Instruments.

0 голосов
/ 19 декабря 2010

Вы проверили утечки памяти?Инструменты -> Утечки.http://developer.apple.com/library/ios/#documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.htmlЕще одно соображение - правильно распределить и освободить все объекты, что не просто, но необходимо.

Вы можете включить другой элемент управления из опций сборки: RUN_CLANG_STATIC_ANALYZER, чтобы показать все неправильные версии во время компиляции.

альберто

0 голосов
/ 19 декабря 2010

Я предлагаю вам взглянуть на каждый из методов viewDidUnload ваших контроллеров представления. Начиная с iOS 3.0, это место, где iOS будет пытаться вернуть память, когда ваше приложение получит предупреждение о памяти.

Чтобы быть более понятным, вы должны попытаться установить все свои IBOutlets в ноль в этом методе, чтобы при вызове ваши ненужные элементы пользовательского интерфейса (ненужные, потому что в то время эти файлы пера не показывались пользователю) были очищены и вернуть выделенную память в ОС. И когда они появятся снова, они будут воссозданы методом viewDidLoad.

Пример кода:

- (void)viewDidUnload {
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...