对于我的iPhone应用程序中的视图,我使用的是ABTableViewCell
(https://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在他着名的博客文章中解释的那样。为此处理图像的正确和最快的方法是什么。我想继续使用我的单例缓存/下载类来处理图像,但我不认为这是问题的根源,因为我正在复制图像对象。
答案 0 :(得分:1)
[super dealloc];
应该是- (void)dealloc
的最后一行。
相关:Why do I have to call super -dealloc last, and not first?