загрузка пользовательского представления с помощью loadNibNamed, показывающего утечки памяти - PullRequest
1 голос
/ 20 мая 2010

У меня есть несколько пользовательских ячеек таблицы и представлений, которые я построил с помощью построителя интерфейса

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

Владелец объекта, если перо NSObject Класс для ячейки таблицы - это имя класса для моей ячейки таблицы

Вот как я создаю ячейку таблицы в моем коде:

SectionedSwitchTableCell *cell = nil;
NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:kSectionedSwitchTableCellIdentifier owner:owner options:nil];
for(id currentObject in nibs)
{
    if([currentObject isKindOfClass:[SectionedSwitchTableCell class]])
    {
        cell = (SectionedSwitchTableCell *)currentObject;
        break;
    }
}
return cell;

Для моих пользовательских заголовков таблиц у меня есть это

    NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"CustomTableHeader" owner:self options:nil];
    for(id currentObject in nibs)
    {
        if([currentObject isKindOfClass:[CustomTableHeader class]])
        {
           return header
        }
    }

В моих файлах .h и .m для пользовательского представления у меня есть IBOutlet, @property, настроенный для всего, кроме фонового изображения UIImageView. Все, что имеет IBOutlet и @property, также @synthesized и выпущено в файле .m.

Утечки показывают, что у меня возникают утечки памяти в CALayer при создании этих объектов пользовательского представления. Я делаю что-то не так при создании этих пользовательских объектов просмотра? Я как бы рву свои волосы, пытаясь выяснить, откуда эти утечки.

В качестве примечания, у меня есть фоновое изображение UIImageView, определенное в этих пользовательских представлениях, но я не определял свойства и IBOutlets в моих файлах .h и .m. Их определение не имеет значения, когда я провожу его через «Утечки», но просто хочу подтвердить, правильно ли я поступаю.

Любой вклад был бы очень полезным. Спасибо:)

1 Ответ

1 голос
/ 06 сентября 2011

Проверьте пользовательский файл xib ячейки, убедитесь, что вы установили идентификатор (kSectionedSwitchTableCellIdentifier) ​​для ячейки. У меня есть аналогичная проблема и исправлена ​​с этим.

...