Нужно ли освобождать объект UIImage, даже не выделяя память? - PullRequest
0 голосов
/ 26 марта 2010

Я добавил изображение на кнопку

UIImage* deleteImage = [UIImage imageNamed:@"Delete.png"];
CGRect imageFrame=CGRectMake(-4,-4, 310, 55);
[btn setFrame:imageFrame];
btn.backgroundColor=[UIColor clearColor];
[btn setBackgroundImage:deleteImage forState:UIControlStateNormal];
[btn setTitle:@"Delete" forState:UIControlStateNormal];
[btn addTarget:self  action:@selector(editDeleteAction) forControlEvents:UIControlEventTouchUpInside];
[elementView addSubview:btn];
[deleteImage release];// do we need to release the image here

Если я выпущу здесь, он работает нормально, но при распределении объектов число изображений увеличивается.

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Если вы создаете изображение с сообщением imageNamed: вам не нужно его выпускать, потому что вы получаете автоматически выпущенное изображение.

Только если вы создаете образ с одним из сообщений init ...: сообщения, которые вы должны выпустить позже.

0 голосов
/ 26 марта 2010

" imageNamed :" метод дает объект с автоматическим освобождением , поэтому вам не нужно освобождать объект.

FYI : " imageNamed : "метод использует внутренний кэш (вы можете столкнуться с предупреждением о наличии памяти, если imageNamed: метод широко используется).Лучше удалять кеш при получении предупреждений.

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
    [[ImageCache sharedImageCache] removeAllImagesInMemory];
}

Просмотрите это руководство http://akosma.com/2009/01/28/10-iphone-memory-management-tips/

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