Почему я получил сообщение об ошибке «отправлено освобожденному объекту»? - PullRequest
0 голосов
/ 02 мая 2010

У меня есть табличное представление, и 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 и делегировать CharTableController. В представлении CharTableController очевидно, что TableView в IB. Ссылочный объект в dataSource> TableView и делегат> TableView. Что не так с моей настройкой? ТГц.

1 Ответ

0 голосов
/ 03 мая 2010

Как заполняется listData? Возможно, вы добавляете объекты в массив, а затем где-то эти объекты освобождаются. Таким образом, listData ссылается на не более существующий объект.

Установите точку останова в вашем методе dealloc объекта, чтобы увидеть, когда происходит его освобождение, и попробуйте включить NSZombie.

Thierry

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...