为什么我的图像泄漏或僵尸?

时间:2011-10-19 15:09:38

标签: xcode uiimageview uiimage allocation

我有一个可以切换图像的应用,但是我遇到了很多麻烦...... 第一个“del”是de AppDelegate,“displayImage”在其.m中定义 “equiz”是一个整数,但是所有图像都被命名​​为“1”,“2”并且像那样

因此,当我使用此代码时,我会收到泄漏但没有崩溃:

    UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"%d",equiz]];
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
    imgView.frame = del.displayImage.frame;
    del.displayImage = imgView;
    [imgView release];

然后我使用此功能但是当我转到设备的“桌面”并返回应用程序时出现崩溃:

    UIImage *img = [UIImage imageNamed:[NSString stringWithFormat:@"%d",equiz]];
    del.displayImage.image = img;
    [img release] //"that line"

然后你说:“你正在释放你不拥有的物体” 我说:“如果我删除”那条线“我会得到同样的泄漏D:

有人可以帮我解决这个问题吗? 非常感谢你提前:D

1 个答案:

答案 0 :(得分:0)

您好我有类似的问题,它来自NSString。所以我的解决方案是: 在.h文件中创建

NSString *imageName;
@property(nonatomic, retain)NSString *imageName;

然后在.m文件中执行此操作

@synthesize imageName; ...

imageName = [NSString stringWithFormat:@"%d",equiz];
UIImage *img = [UIImage imageNamed:imageName];
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
    imgView.frame = del.displayImage.frame;
    del.displayImage = imgView;
    [imgView release];

...

并在dealloc方法中释放imageName ...

- (void)dealloc {
   [imageName release];
   [super dealloc];
}

通过我这个工作..希望帮助也是你的解决方案。