ABTableViewCell并添加图像

时间:2011-06-19 09:22:53

标签: iphone cocoa-touch ios4

对于我的iPhone应用程序中的视图,我使用的是ABTableViewCellhttps://github.com/enormego/ABTableViewCell)的子类。这是一个相当简单的单元格,但是我想将它用于我需要的滚动速度,因为它们中的很多都可以同时出现在表格中。

这是文件的标题:

@interface WHUserTableViewCell : ABTableViewCell {

    NSString* Name;
    NSString* DetailsText;
    UIImage*  UserImage;

}

@property (nonatomic, copy) NSString* Name;
@property (nonatomic, copy) NSString* DetailsText;
@property (nonatomic, copy) UIImage* UserImage;

我知道通过在图像上使用'copy',我只支持iOS 4.2及更高版本,但这是我稍后可能会解决的问题。

我按照AteBits使用此单元格的方式,通过为属性创建自定义设置方法,如下所示:

- (void) setUserImage:(UIImage *) userImage
{
    [UserImage release];
    UserImage = [userImage copy];
    [self setNeedsDisplay];
}

- (void) setName:(NSString *) name
{
    [Name release];
    Name = [name copy];
    [self setNeedsDisplay];
}

- (void) setDetailsText:(NSString *) detailsText
{
    [DetailsText release];
    DetailsText = [detailsText copy];
    [self setNeedsDisplay];
}

分配给“UserImage”属性的图像来自Singleton类,它提供图像的缓存和下载。因此,该类应该是图像的“所有者”。

只有一个问题,一旦单元格deallocs,我释放了应用程序在[UserImage release]行崩溃的所有属性,这是我的dealloc方法:

- (void)dealloc
{
    [super dealloc];

    [UserImage release];
    [Name release];
    [DetailsText release];
}

这个单元格使用自定义绘图,就像AteBits在他着名的博客文章中解释的那样。为此处理图像的正确和最快的方法是什么。我想继续使用我的单例缓存/下载类来处理图像,但我不认为这是问题的根源,因为我正在复制图像对象。

1 个答案:

答案 0 :(得分:1)

[super dealloc];应该是- (void)dealloc的最后一行。

相关:Why do I have to call super -dealloc last, and not first?