Проблема с памятью относительно UIImageView на IPhone 4.0 / IPad - PullRequest
0 голосов
/ 23 августа 2010

Сбой приложения из-за недостатка памяти [уровень предупреждения о получении памяти 1 + 2]

Чтобы отследить это, я использовал Инструмент и пришел со следующими точками

Test Enviorment: в окне добавлен контроллер одного представления

  1. Когда я не использую UIImageView Real Memory используется 3.66 МБ

  2. Когда я использую UIImageView с размером изображения 25 КБ: Реальная память используется 4,24 МБ. почти на 560 КБ больше по сравнению с без UIImageView, и которые продолжают добавляться, когда я добавляю больше UIImageview к представлению.

ниже приведен пример кода для добавления UIImageview, который я обновляю

UIImageView* iSplashImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-Landscape.png"]];
iSplashImage.frame = CGRectMake(0, 0, 320, 480);
[self.window addSubview:iSplashImage];

И

dealloc

if(iSplashImage)
{
  [iSplashImage release];
  iSplashImage = nil;
}

Проблема в том, что эти 560 КБ не получают релиз, и через некоторое время приложение получает предупреждение о нехватке памяти.

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

Заранее спасибо,

Сагар

Ответы [ 2 ]

1 голос
/ 23 августа 2010

Вы звоните [iSplashImage removeFromSuperview] или что-то в этом роде?Изображение требует больше памяти, чем файл, так как оно распаковано в памяти - 320x480x4 = 600Kb

0 голосов
/ 24 августа 2010
if(iSplashImage)
{
  [iSplashImage release];
  iSplashImage = nil;
}

Не ваш вопрос, но я уверен, что [iSplashimage release]; делает все это в одной строке.если iSpashImage = nil, сообщение будет оцениваться как не-proc.iSplashImage в этот момент является просто указателем, поэтому, имеет ли он нулевое значение или нет, не влияет на память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...