将自动释放的对象分配给保留的属性

Posted

技术标签:

【中文标题】将自动释放的对象分配给保留的属性【英文标题】:Assigning an autoreleased object to a retained property 【发布时间】:2012-02-16 14:15:20 【问题描述】:

我的自定义 UITableViewCell 类 (MyTableCell) 中有一个名为 bgImage 的属性。它的声明像

@property (nonatomic, retain) UIImageView *bgImage;

在MyTableCell的dealloc方法中,我释放btImage

[bgImage release];
self.bgImage = nil;
[super dealloc];

现在我对 cellForRowAtIndexPath 中的这个 bgImage 所做的就是为它分配一个自动释放的对象

myTableCell.bgImage.image = [Util imageNamedNoCache:@"image.png"];

其中 imageNamedNoCache 返回自动发布的图像。

我的问题是我在 MyTableCell 的 dealloc 方法中得到了 EXC_BAD_ACCESS。 谁能告诉我为什么会得到这个?

最好的问候

【问题讨论】:

【参考方案1】:

你在 dealloc 中释放了两次bgImage,这就是你得到EXC_BAD_ACCESS 的原因。 你自己释放它,当你做self.bgImage = nil;时它在生成的setter方法中释放它@

【讨论】:

以上是关于将自动释放的对象分配给保留的属性的主要内容,如果未能解决你的问题,请参考以下文章

自动释放并分配给 nil

自动释放对象递减的保留计数何时减少?

目标 C:线程之间的自动释放对象?

重新分配给包含自动释放对象的指针是不是不正确?

使用点语法设置保留属性时使用自动释放?

目标 C:保留/释放内联分配的对象