помочь с проблемами памяти при добавлении UIImageView в ячейку - PullRequest
1 голос
/ 17 мая 2011

Я добавляю изображение в первую ячейку в UForableView cellForRowAtIndexPath примерно так:

if (row == 0) {
        UIImage *image = [UIImage imageNamed:@"numberOneIcon.png"];
        //create a framework for the ui image view
        CGRect frame = CGRectMake(10, 37, image.size.width, image.size.height);
        //initialize the ui image view
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
        imageView.image = image;

        [cell.contentView addSubview:imageView];
        [image release];
        //[imageView release];
}

Если я раскомментирую [релиз imageView]; оно завершится сбоем, когда вы «закроете» приложение (нажмите домашнюю кнопку), затем вернетесь в приложение и вернетесь к представлению с UITableView в нем.

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

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Вы должны выпускать imageView, а не изображение.Измените этот код следующим образом:

[cell.contentView addSubview:imageView];
        //[image release];
        [imageView release];

Вы не являетесь владельцем изображения, так как не создали его с помощью alloc, new, и не сохранили его, поэтому вы не должны его выпускать.Однако вы распределили экземпляр imageView, так что это то, что вы выпускаете.Я настоятельно рекомендую прочитать это .

0 голосов
/ 17 мая 2011

Вы также можете использовать:

    UIImageView *imageView = [[[UIImageView alloc] initWithFrame:frame] autorelease];

для вашего удобства,

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