2010-04-17 78 views
2

我有一系列按钮,每个都使用不同的图像。我可以重用保持着的变量像这样如下:保留,重用,发布?

// 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]; 

或做我需要为传递到每个按钮的setBackgroundImage:每个图像的新UIImage并依靠自动释放,而不是保留的UIImage。上述的作品,但我不知道如何将这些按钮的图像设置为相同的图像将影响保留计数。

回答

3

你有什么会泄漏(因为你失去了对第一个图像的引用)和崩溃(因为你release你不拥有的对象)。如果你删除了-retain-release,你的代码就可以正常工作。

+0

好吧,所以图像是由UIButton“拥有”,我不需要担心自己保留它。应用程序运行良好,没有你所指出的,所以谢谢! – typeoneerror 2010-04-17 21:23:19