Сбой UITableView при прокрутке - PullRequest
1 голос
/ 24 июля 2011

Всякий раз, когда я прокручиваю свой UITableView, он смотрит на массив, чтобы выяснить, чем заполнить следующую ячейку, но массив пуст, вызывая сбой, и кажется, что он каким-то образом освобожден. Вот мой код:

.h

@interface HomeViewController : UITableViewController {

    NSArray *vaults;

}


@property (retain) NSArray *vaults;

@end

.m

#import "HomeViewController.h"

NSString *vaultsPath;

@implementation HomeViewController

@synthesize vaults;

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    vaultsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Vaults"];
    NSFileManager *fileManager = [NSFileManager defaultManager];
    self.vaults = [fileManager contentsOfDirectoryAtPath:vaultsPath error:nil];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

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

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    NSString *dictionaryPath = [NSString stringWithFormat:@"%@/%@",
                                vaultsPath,
                                [self.vaults objectAtIndex:indexPath.row]]; //Crashes at this line, with the self.vaults array now empty.
    NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:dictionaryPath];
    cell = [AHCellCreation createCellWithDictionary:dictionary Cell:cell];

    return cell;
}


- (void)dealloc
{
    [super dealloc];
    [self.vaults release];
}

@end

Есть идеи?

1 Ответ

4 голосов
/ 24 июля 2011

Я предполагаю, что приложение вылетает при попытке доступа к значению vaultsPath, которое должно быть освобождено. Поскольку количество строк в табличном представлении зависит от количества элементов в массиве, метод, возвращающий ячейки, не будет вызван, если в нем нет элементов.
Попробуйте сохранить значение, присвоенное vaultsPath, и не забудьте опубликовать его позже.

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