eug*_*ene 7 iphone image objective-c uiimageview ios
我正在通过[self setImage:newImage]改变UIImageview的图像;
看起来每次我使用newImage,之前的图像似乎没有被释放.
替换UIImageView图像的正确方法是什么?
谢谢
小智 9
是的,UIImageView setImage确实泄漏了!实际上,泄漏CGImage,而不是UIImage(作为仪器"分配"显示)
我使用BrutalUIImage而不是UIImage
@interface BrutalUIImageView : UIView {
UIImage *image;
}
@property(nonatomic, retain) UIImage *image;
@end
@implementation BrutalUIImageView
@synthesize image;
- (void)setImage:(UIImage *)anImage {
[image autorelease];
image = [anImage retain];
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[image drawInRect:rect];
}
- (void)dealloc {
[image release];
[super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)
UIImageView setImage: 永远不会泄漏,除非你传递的图像没有被释放.
如果您要将自动释放的图像分配给图像视图,则代码不会泄漏,如下所示.
UIImage *newImage = [UIImage imageNamed:@"sampleImage"];
[yourImageView setImage:newImage];
Run Code Online (Sandbox Code Playgroud)
但是,如果要在某处分配图像,则必须手动释放它.
| 归档时间: |
|
| 查看次数: |
7353 次 |
| 最近记录: |