在一個名爲公用事業類,我使用一個靜態圖像加載了所有的按鈕看來,像這樣的:我應該返回一個靜態的UIImage或返回副本?
static UIImage *baseImage_bottomToolbarBG;
+ (void) initialize {
baseImage_bottomToolbarBG =
[UIImage imageNamed:@"bottom-toolbar-background"];
// take bottom-toolbar-background, which is huge, copy it down to size
// at which it will actually be used
}
+ (void) dealloc {
baseImage_bottomToolbarBG = nil;
}
+ (UIImage *)getBottomToolbarImagePortrait {
return baseImage_bottomToolbarBG;
}
...然後使用這個背景圖片設置一個按鈕,我把這稱爲:
UIImage *image = [Utilities getBottomToolbarImage];
[button setBackgroundImage:image forState:UIControlStateNormal];
這是一個不錯的做法,或者在我的getBottomToolbarImage
我應該做靜態UIImage
的副本並返回副本?
這是使用ARC和定位iOS 4以上
編輯:看到initialize
法新評論
這可能是最好的方式,因爲這意味着當它沒有被同時在內存壓力下使用(這UIImage的,使用這種圖像可以得到卸載方法,將照顧)。如果你仍想堅持在一個靜態的,那麼你就需要'-retain'它,這將保持它永遠存在(雖然我相信的UIImage仍然可以卸載的位圖數據,如果它沒有被同時在內存壓力下使用,但不要在這裏引用我)。 – 2012-02-20 20:39:10
我沒有在原來的問題指定,但我實際加載的原始文件,然後收縮並保持縮小圖像的靜態副本。我不希望我的應用每次需要工具欄圖像時都要執行此操作。 – MusiGenesis 2012-02-21 03:31:17
@KevinBallard'UIImage' [記錄在清除低內存情況下的圖像數據](https://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIImage_Class/Reference/Reference.html# // apple_ref/DOC/UID/TP40006890-CH3-SW2)。 – 2012-02-21 04:43:52