TableView VS Память Предупреждение

Я использую xcode 5 и ios 7. Когда я прокручиваю до конца таблицы, загружаю данные асинхронно с сервера (картинка 50-100kb). После 10 попыток возникает предупреждение памяти.... Асинхронная загрузка с GCD. Как решить проблему и не потерять плавность прокрутки контента? Работал ARC с GCD?

CellCreate:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *cellID = [NSString stringWithFormat:@"Cell%i",indexPath.section];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    /*
    First section simple text cell
    Second section hard cells
    */
    if(cell == nil)
    {
        switch (indexPath.section)
        {
            case 0:
            {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
                break;
            }
            case 1:
            {
                cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
                break;
            }            
            default:
            {
                break;
            }
        }

    }

    if (indexPath.section == 1)
    {
        NSInteger index = indexPath.row;
        ModelInfo* model = [arrayModelInfo objectAtIndex:index];
        [(CustomCell*)cell setContent:model];//Update subview in cell with parametrs model
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

CustomCell setContent

[self.CustomConentView.imageView setImage:model.image];
[self.CustomConentView.label setText:model.name]; 

Скачать:

NSInteger serverOffset = 0;
.....
dispatch_async(queueDownloadData, ^{
        [self backgroundDownloadRecometedProducts];
    });    
.....

- (void) backgroundDownload
{
    Network* network = [[LMNetwork alloc] init];
    [network getRecomendedProductOffset:serverOffset
                                Success:^(id JSON) {
                                    dispatch_async(queueDownloadData, ^{
                                        recomentedProductsOffset += 10;
                                        [self parse:JSON];
                                    });

                                }];
}

- (void) parse: (id) JSON
{
    NSArray* result = [JSON objectForKey:@"result"];
    for (NSDictionary* parametrs in result)
    {
        ModelInfo* model = [[ModelInfo alloc] initWithDictionary:parametrs];

        [arrayModelInfo addObject:model];

        dispatch_async(self.queueDownloadImages, ^{
            [self downloadImageForName:model.thumbnail Tag:[arrayModelInfo indexOfObject:model]];
        });
    }

    dispatch_async(dispatch_get_main_queue(), ^{
        [tableViewContent reloadData];
    });
}

- (void) downloadImageForName: (NSString*) imageName Tag: (NSInteger) tag
{
    Network* network = [[Network alloc] init];
    [network downloadImageWithName:imageName
                          ImageTag:tag
                           Success:^(UIImage *image, NSInteger tag) {
                               ModelInfo* model = [arrayModelInfo objectAtIndex:tag];
                               model.image = image;
                               dispatch_async(dispatch_get_main_queue(), ^{
                                   [tableViewContent reloadData];
                               });
                           }];
}

В почтовом запросе класса Network на сервере я использовал AFNetworking

0 ответов

Другие вопросы по тегам