Отображение нескольких изображений ImageViews на iPad - PullRequest
0 голосов
/ 05 ноября 2011

У меня есть какой-то пользовательский ввод, который приводит к отображению 4 изображений одновременно. Изображения загружаются онлайн асинхронно. Мой ViewController имеет метод делегата, который будет отображать изображение, когда оно будет готово, следующим образом:

- (void)imageDidLoad:(UIImage *)image {

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOffset, yOffset, 192, 192)];
    imageView.backgroundColor = [UIColor whiteColor];
    imageView.image = image;

    [self.view addSubview:imageView];
    xOffset = xOffset + 192;

    if (count != 0 && count % 4 == 0) {
        yOffset += 192;
        xOffset = 0;
    }

    count++;
}

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

Какие есть альтернативы этому? Должен ли я просто автоматически выпустить UIImageViews? Что-нибудь еще, что я могу сделать (лучше, чем autorelease)?

Спасибо

Ответы [ 3 ]

0 голосов
/ 05 ноября 2011

Вы должны выпустить свой imageView после того, как вы добавили его как подпредставление. Это исправит твою утечку.

0 голосов
/ 05 ноября 2011

Это решит вашу проблему, но вам действительно следует повторно использовать imageView вместо того, чтобы каждый раз создавать новый.

- (void)imageDidLoad:(UIImage *)image {

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(xOffset, yOffset, 192, 192)];
imageView.backgroundColor = [UIColor whiteColor];
imageView.image = image;
[self.view addSubview:imageView];
[imageView release];

xOffset = xOffset + 192;

if (count != 0 && count % 4 == 0) {
    yOffset += 192;
    xOffset = 0;
}

count++;

}

0 голосов
/ 05 ноября 2011

Вместо создания нового UIImageView при каждой загрузке изображения, я бы установил 4 свойства UIImageViews для контроллера.Затем я бы изменил свойство изображения соответствующего UIImageView после загрузки изображения.Вы бы выпустили свойства в - (void) dealloc как обычно.

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