我为TableView创建了一个自定义TableViewCell,但是如果有dealloc方法(在Custom Cell Class中),应用程序崩溃了。请参阅下面用于表格单元格类的代码:
#import <UIKit/UIKit.h>
@interface CustomTableCell : UITableViewCell {
UILabel *nameLabel_;
UILabel *dateLabel_;
}
@property (nonatomic, retain) IBOutlet UILabel *nameLabel;
@property (nonatomic, retain) IBOutlet UILabel *dateLabel;
@end
#import "CustomTableCell.h"
@implementation CustomTableCell
@synthesize nameLabel = nameLabel_;
@synthesize dateLabel = dateLabel_;
- (void) dealloc {
[self.nameLabel release];
self.nameLabel = nil;
[self.dateLabel release];
self.dateLabel = nil;
[super dealloc];
}
@end
创建自定义单元格的代码(cellForRowAtIndexPath):
UITableViewCell *Cell = [tableView dequeueReusableCellWithIdentifier:@"DemoCell"];
if (Cell == nil){
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomTableCell" owner:nil options:nil];
for(id currentObject in topLevelObjects)
{
if([currentObject isKindOfClass:[CustomTableCell class]])
{
Cell = (CustomTableCell *)currentObject;
break;
}
}
}
如果我从自定义Cell中删除dealloc方法,一切正常。其他方面我会得到一个例外(当我滚动表格查看时): - [CALayer release]:发送到解除分配的实例0x6fbc590的消息 *
我们在customTableViewCell中是否需要dealloc方法?请帮我找到解决这个问题的方法。
答案 0 :(得分:1)
从表面上看,您正在错误地编写-dealloc
方法。这样做:
- (void) dealloc {
[nameLabel_ release];
nameLabel_ = nil;
[dateLabel_ release];
dateLabel_ = nil;
[super dealloc];
}
您绝不应在-dealloc
方法中使用访问者;直接与你的ivars合作。