自定义表格视图单元格中的Dealloc方法

时间:2012-12-06 01:04:42

标签: objective-c ios5 uitableview xcode4.5

我为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方法?请帮我找到解决这个问题的方法。

1 个答案:

答案 0 :(得分:1)

从表面上看,您正在错误地编写-dealloc方法。这样做:

- (void) dealloc {

    [nameLabel_ release];
    nameLabel_ = nil;
    [dateLabel_ release];
    dateLabel_ = nil;

    [super dealloc];
}

您绝不应在-dealloc方法中使用访问者;直接与你的ivars合作。