为什么我收到“发送到释放的对象错误”?

时间:2010-05-02 06:05:55

标签: iphone uitableview

我有一个Table View和CharTableController,CharTableController的工作原理如下:

·H:

#import <Foundation/Foundation.h>


@interface CharTableController : UITableViewController <UITableViewDelegate, UITableViewDataSource>{
//  IBOutlet UILabel *debugLabel;
    NSArray *listData;
}
//@property (nonatomic, retain) IBOutlet UILabel *debugLabel;
@property (nonatomic, retain) NSArray *listData;


@end

.m:

#import "CharTableController.h"

@implementation CharTableController
@synthesize listData;

- (void)viewDidLoad {
    NSArray *array = [[NSArray alloc] initWithObjects:@"Sleepy", @"Sneezy", @"Bashful", @"Happy", @"Doc", @"Grumpy", @"Dopey", @"Thorin", @"Dorin", @"Nori", @"Ori", @"Balin", @"Dwalin", @"Fili", @"Kili", @"Oin", @"Gloin", @"Bifur", @"Bofur", @"Bombur", nil];
    self.listData = array; 
    [array release]; 

    [super viewDidLoad];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [self.listData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier];

    if (cell == nil) { 
        cell = [[[UITableViewCell alloc]
            initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier:SimpleTableIdentifier] autorelease];

        NSUInteger row = [indexPath row]; cell.textLabel.text = [listData objectAtIndex:row]; 
    }
    return cell;
}

@end

我使用IB将TableView的dataSource和委托链接到CharTableController。 在CharTableController的视图中显然是IB中的TableView。 dataSource中的参考对象&gt; TableView和delegate&gt; TableView中。我的设置有什么问题?太赫兹。

1 个答案:

答案 0 :(得分:0)

listData是如何填充的? 也许您在Array中添加对象,然后在某处释放这些对象。 所以listData引用的不是更多的现有对象。

在对象dealloc方法中放置一个断点,以查看何时释放并尝试启用NSZombie。

亨利