我正在通过self setImage改变UIImageview的形象: newImage;
看起来每次我使用newImage这样做的时候,之前的图像似乎都没有发布。
替换UIImageView镜像的正确方法是什么?
谢谢
发布于 2011-01-10 16:58:23
UIImageView setImage:永远不会泄露,除非你传递的图片没有被发布。
你的代码不会泄漏,如果你正在分配一个自动释放的图像到图像视图,如下所示。
UIImage *newImage = [UIImage imageNamed:@"sampleImage"];
[yourImageView setImage:newImage];但是,如果您要将图像分配到某个地方,则必须手动释放它。
发布于 2011-01-21 02:01:22
是的,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发布于 2011-06-23 20:31:47
您的BrutalUIImageVIew类非常有趣,但是通过使用UIImage "drawInRect:“方法绘制图像,我丢失了PNG文件的透明区域。
你知道如何绘制图像,保持PNG的透明度吗?(当然,不使用UIImageVIew会在调用“setImage:”时泄漏CGImage )
https://stackoverflow.com/questions/4644912
复制相似问题