Итак, я установил свое приложение на iPad, и оно зависло из-за проблемы с памятью.Я подумал, что это потому, что я использую действительно большие файлы изображений, поэтому я вернулся и уменьшил их все и, по сути, вырезал около 75% их размера, изменив их размер, а затем используя PNGCrush.
Теперь, что касается запуска программы, если у меня будет фоновое изображение для каждой из моих 4-х отдельных вкладок, сэкономит ли она память, если я установлю изображения на Null каждый раз, когда я переключаю вкладки, или я должен оставитьих установить?У меня есть одна страница, на которой есть пара дюжин изображений, поскольку они действуют как кнопки, и из того, что я слышу, звучит так, как будто я должен очистить их все, когда я не просматриваю эту страницу.Это правильно?
Прямо сейчас, когда я загружаюсь, я загружаю все образы для всего в приложении в своего рода менталитете: «загрузи это сейчас и покончим с этим», хотя из того, что яЯ читал, что вызывает проблемы с памятью, так как не так много памяти для использования.Означает ли это, что каждый раз, когда я переключаю вкладки или представления, я хочу очистить все изображения от невидимых, а затем перезагрузить их, когда мы вернемся к ним?Это приведет к увеличению производительности?Или хотя бы предотвратить сбои?Моя программа работает в симуляторе, но когда я запускаю ее на своем iPad, она просто взрывается = /
Спасибо!
РЕДАКТИРОВАТЬ: я использую Monotouch BTW, следовательно, все в C #
UIImage BG = UIImage.FromFile("Images/Makes/explosion.png");
UIImage basic = UIImage.FromFile("Images/Models/camaro.png");
UIImage advance = UIImage.FromFile("Images/search.png");
AdvancedSearchButton.SetBackgroundImage(advance, UIControlState.Normal);
ImageSearchButton.SetBackgroundImage(basic, UIControlState.Normal);
MainBG.Image = BG;
BG.Dispose();
basic.Dispose();
advance.Dispose();
Теперь я знаю, что в обычном C # dispose()
на самом деле не «освобождает» память, но я читал что-то, что говорит, что он преобразуется в "release"
, когда он компилируется в obj-c, так что это по существуосвободить эти объекты.
Кроме того, мне интересно, понадобится ли мне dispose()
отдельных кнопок и изображения после того, как я перестану их просматривать.Я просто устанавливал для изображения значение NULL, но это приводило к ошибкам.
MainBG.Dispose();
AdvancedSearchButton.Dispose();
ImageSearchButton.Dispose();
Большое спасибо за помощь!
EDIT2:
Так что я просто попробовал вышеописанноекод, фоновые изображения и все остальное все еще там и выглядит так, как будто ничего не очищается.Предложения?