Я написал класс, который действует как фильтр. Я прохожу три объекта:
- NSArray, который содержит объекты для фильтрации (эти объекты имеют свойство timestamp)
- NSMutableArray (который будет содержать имена разделов для табличного представления, периоды, основанные на временных метках). Мне нужен этот массив, потому что я должен отсортировать периоды.
- NSMutableDictionary, в котором ключами будут имена разделов, значения - NSMutableArrays, в которых хранятся элементы за заданный период.
В классе, из которого я передаю эти объекты, есть tableView, в котором я отображаю элементы.
Этот класс имеет свои собственные NSMutableArray и NSMutableDictionary, я не инициализирую их, только сохраняю соответствующие возвращаемые значения класса фильтра. В методе delloc я освобождаю их. В классе фильтра есть метод:
+ (void)insertItem:(id)item forPeriod:(NSString *)period toContainer:(NSMutableDictionary *)container {
if ( ![[container allKeys] containsObject:period] ) {
// the period isn't stored, create and store it
NSMutableArray *periodArray = [[NSMutableArray alloc] init];
[container setObject:periodArray forKey:period];
[periodArray release];
periodArray = nil;
}
// store the item
NSMutableArray *arrayForPeriod = [container objectForKey:period];
[arrayForPeriod addObject:item];
arrayForPeriod = nil;
}
Прибор показывает мне утечку, когда я устанавливаю вновь выделенный массив как объект словаря. На данный момент это определенно верно, поскольку словарь снова сохраняет массив, поэтому после выпуска он сохраняет счетчик равным 1. Но я думаю, что в классе вызывающей стороны, когда я выпускаю словарь, массив также будет освобожден. Я не прав?