добавление 1000 изображений в скроллвью приложения ios - PullRequest
0 голосов
/ 28 февраля 2012

в моем приложении IOS я пытаюсь загрузить 1000 изображений в виде прокрутки, при запуске кода происходит сбой.Я обнаружил, что это ошибка нехватки памяти.Я попытался добавить 700 изображений, но нет сбоя.Но я хочу добавить более 1000 изображений (около 4000) и просмотреть их.как управлять всеми изображениями и получать их без сбоев.

помогите пожалуйста друзья

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Я не знаю, откуда приходят ваши изображения, но я написал собственный метод (в классе с именем WebImageOperations) для загрузки изображений с использованием блоков и GCD:

Вот класс: WebImageOperations.h

#import <Foundation/Foundation.h>

@interface WebImageOperations : NSObject {
}

// This takes in a string and imagedata object and returns imagedata processed on a background thread
+ (void)processImageDataWithURLString:(NSString *)urlString andBlock:(void (^)(NSData *imageData))processImage;
@end

WebImageOperations.m

#import "WebImageOperations.h"
#import <QuartzCore/QuartzCore.h>

@implementation WebImageOperations


+ (void)processImageDataWithURLString:(NSString *)urlString andBlock:(void (^)(NSData *imageData))processImage
{
    NSURL *url = [NSURL URLWithString:urlString];

    dispatch_queue_t callerQueue = dispatch_get_current_queue();
    dispatch_queue_t downloadQueue = dispatch_queue_create("com.isupport.processsmagequeue", NULL);
    dispatch_async(downloadQueue, ^{
        NSData * imageData = [NSData dataWithContentsOfURL:url];

        dispatch_async(callerQueue, ^{
            processImage(imageData);
        });
    });
    dispatch_release(downloadQueue);
}

@end

А у тебя

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

// Change cell.picImageView to your ImageView
cell.picImageView = [WebImageOperations roundedImageView:cell.picImageView];
// Pass along the URL to the image (or change it if you are loading there locally)
[WebImageOperations processImageDataWithURLString:urlString andBlock:^(NSData *imageData) {
    if (self.view.window) {
        UIImage *image = [UIImage imageWithData:imageData];

        cell.picImageView.image = image;
    }

}];

Это загрузит изображения по мере необходимости, а TableView позаботится о снятии их с очереди при необходимости. Спасибо

1 голос
/ 28 февраля 2012

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

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