UITableView падает при прокрутке вниз - PullRequest
0 голосов
/ 03 октября 2011

Я знаю, что есть много вопросов по этой теме, но я не смог решить мою проблему ...

Ну, я обнаружил проблему, это глобальный массив контактов. Если я прокомментирую эти строки, таблица будет работать нормально.

Код такой:

@interface ContactsView : UIViewController <UITableViewDelegate, UITableViewDataSource>{
    IBOutlet UITableView *table;
    NSMutableArray * contactsArray;
}
@property (nonatomic, retain) NSMutableArray *contactsArray;
@property (nonatomic, retain) IBOutlet UITableView *table;

В ViewDidLoad я делаю:

contactsArray = [[NSMutableArray alloc] init];

А вот реализация каждой ячейки:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"ContactsCell";

    ContactsCell *cell = (ContactsCell *) [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell==nil){
        NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ContactsCell" owner:self options:nil];
        for(id currentObject in topLevelObjects){
            if([currentObject isKindOfClass:[UITableViewCell class]]){
                cell = (ContactsCell *) currentObject;
                break;
            }
        }
    }


    // Configure the cell...
    Person *persona = [[Person alloc] init];
    persona=[contactsArray objectAtIndex:indexPath.row];

    [cell setCellNames:[persona name]];
    [cell setCellStates:@"En Donosti"];

    [persona release];
    return cell;
}

Если я прокомментирую persona=[contactsArray objectAtIndex:indexPath.row]; и [cell setCellNames:[persona name]]; Итак, я уверен, что проблема с контактами Array

Есть идеи, почему он падает?

Спасибо!

1 Ответ

2 голосов
/ 03 октября 2011

Вы не должны освобождать persona объект, поскольку вы просто получаете его из массива.Также Person *persona = [[Person alloc] init]; не имеет никакого эффекта, поскольку вы немедленно перезаписываете созданный вами объект из массива.Фиксированный код должен выглядеть так:

Person *persona = [contactsArray objectAtIndex:indexPath.row];

[cell setCellNames:[persona name]];
[cell setCellStates:@"En Donosti"];
return cell;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...