Утечка памяти в three20 TTTableSubtitleItem?

Я создаю TTTableSubtitleItem, добавляю его в массив, устанавливаю источник данных таблицы в массив, а затем освобождаю массив, однако утечки показывают утечку в TTTableSubtitleItem. Я не уверен, почему?

NSMutableArray *ar =  [[NSMutableArray alloc] init];
while (item = (NSDictionary*)[enumerator nextObject]) {
    NSString *result = [NSString stringWithFormat:@"tt://VideoListViewController/%@",
                        [item objectForKey:@"id"]];

    [ar addObject:[TTTableSubtitleItem itemWithText:[item objectForKey:@"name"]
                                           subtitle:[item objectForKey:@"description"]
                                                URL:result]];   

}
self.dataSource = [[myDataSource alloc] initWithItems:ar];
[ar release];

person user598241    schedule 22.06.2011    source источник


Ответы (1)


Ваша утечка находится по адресу:

self.dataSource = [[myDataSource alloc] initWithItems:ar];

Измените его на:

self.dataSource = [[[myDataSource alloc] initWithItems:ar] autorelease];

Вы выделили myDataSource и не освободили его. Кроме того, не могли бы вы показать мне свое объявление «источник данных» в вашем файле .h?

person darksky    schedule 22.06.2011
comment
Привет, Nayefc, как вы правильно заметили, это была точная проблема. Спасибо, что заглянули и помогли мне с этим. У меня нет объявления dataSource в моем заголовочном файле, нужно ли мне его вставлять? Я использую TTTableViewController, поэтому в коде, где я говорю self.datasource, это первая ссылка на него. - person user598241; 22.06.2011
comment
Ох, ну ладно. Нет не надо ставить. Я просто подумал, что у вас есть это в вашем файле .h, так как вы использовали self. Я просто попросил вас, чтобы убедиться, что вы выпустили его, если вы использовали сохранение в @property. Но не беспокойтесь об этом - вы готовы идти. - person darksky; 22.06.2011