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

UIImageまたは、各ボタンに渡される画像ごとに新しい画像を作成しsetBackgroundImage:、保持されたUIImageではなく自動リリースに依存する必要がありますか。上記は機能しますが、これらの各ボタンの画像を同じ画像に設定すると、保持カウントにどのように影響するかわかりません。

4

1 に答える 1

3

そこにあるものはリークし(最初の画像への参照を失うため)、クラッシュします(release所有していないオブジェクトのため)。とを削除する-retainと、-releaseコードは正常に機能します。

于 2010-04-17T21:12:43.983 に答える