在一个名为公用事业类,我使用一个静态图像加载了所有的按钮看来,像这样的:我应该返回一个静态的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