Сохранить, повторно использовать, освободить? - PullRequest
2 голосов
/ 18 апреля 2010

У меня есть серия кнопок, каждая из которых использует свое изображение. Могу ли я использовать сохраненную переменную, как показано ниже:

// set images
UIImage *image = [[dice1 backgroundImageForState:UIControlStateHighlighted] retain];
[dice1 setBackgroundImage:image forState:(UIControlStateHighlighted|UIControlStateSelected)];
image = [dice2 backgroundImageForState:UIControlStateHighlighted];
[dice2 setBackgroundImage:image forState:(UIControlStateHighlighted|UIControlStateSelected)];
image = [dice3 backgroundImageForState:UIControlStateHighlighted];
[dice3 setBackgroundImage:image forState:(UIControlStateHighlighted|UIControlStateSelected)];
image = [dice4 backgroundImageForState:UIControlStateHighlighted];
[dice4 setBackgroundImage:image forState:(UIControlStateHighlighted|UIControlStateSelected)];
image = [dice5 backgroundImageForState:UIControlStateHighlighted];
[dice5 setBackgroundImage:image forState:(UIControlStateHighlighted|UIControlStateSelected)];
image = [dice6 backgroundImageForState:UIControlStateHighlighted];
[dice6 setBackgroundImage:image forState:(UIControlStateHighlighted|UIControlStateSelected)];
[image release];

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

1 Ответ

3 голосов
/ 18 апреля 2010

То, что у вас там, будет протекать (потому что вы потеряете ссылку на первое изображение) и падать (потому что вы release объект, которым вы не владеете). Если вы удалите -retain и -release, ваш код будет работать нормально.

...