Почему мой NSMutableArray освобождается в UITableView - PullRequest
1 голос
/ 12 августа 2011

Мой NSMutableArray, кажется, выпускает, и я не могу понять где, вот мой код:

- (void)awakeFromNib {

arrayOfData = [[NSMutableArray alloc] initWithCapacity:0];
[arrayOfData addObject:@"test"];

NSLog(@"array: %@", arrayOfData); 

}

Все хорошо здесь!

Затем я создаю UITable и добавляюэто к представлению, затем я запрашиваю некоторые данные, все нормально.

        arrayOfData = [response objectForKey:@"results"];
        NSLog(@"count: %i", [arrayOfData count]);
        NSLog(@"success!");
        numberOfRows = [arrayOfData count];
        [self.myTableView reloadData];

Создание числа строк тоже работает нормально:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

NSLog(@"test: %i", numberOfRows);
return numberOfRows;

}

Теперь доступ к моему массиву получает сообщение "отправлено освобожденному экземпляру "в этой строке.

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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

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


   // crashes here!
NSLog(@"array: %i", [arrayOfData count]);

if (numberOfRows){

    NSString *filename = [[arrayOfData objectAtIndex:indexPath.row] objectForKey:@"filename"];
    NSString *url  = [NSString stringWithFormat: @"http://www.web.com/dir/%@", filename];  
    [cell.imageView setImageWithURL:[NSURL URLWithString:url]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    cell.textLabel.text = @"My Text";
}

return cell;

}

У меня также есть это в моем заголовке, и я также использовал @synthesize

@property (nonatomic, retain) NSMutableArray *arrayOfData;

Любая помощь будет оценена!

1 Ответ

1 голос
/ 15 августа 2011

Похоже, вы переназначаете arrayOfData с этой строкой:

arrayOfData = [response objectForKey:@"results"];

Если это то, что вы хотите, попробуйте вместо этого:

arrayOfData = [[response objectForKey:@"results"] retain];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...