Я занимаюсь оптимизацией своего приложения и проверяю, правильно ли реализовано управление памятью.Поскольку я обнаружил, что didUnload / dealloc / willAppear не надежен для реализации очистки моей памяти, я решил реализовать свой собственный метод, чтобы иметь полный контроль над управлением памятью.
Определение моих массивов в заголовочном файле
@property (retain) NSMutableArray *selectedCardIDs;
@property (retain) NSMutableArray *selectedRowArray;
@property (retain) NSMutableArray *cardArray;
@property (retain) NSMutableArray *cardIDArray;
Здесь метод выпуска:
- (void) willReleaseObjects {
[self.aCopyOfCardIDArray release];
[self.listOfItems release];
[self.aCopyListOfItems release];
[self.selectedCardIDs release];
[self.selectedRowArray release];
[self.cardArray release];
[self.cardIDArray release];
}
Массивы могут стать очень большими(> 1 000 записей каждый), почему освобождение этих массивов важно после выгрузки представления.Я явно вызываю эту функцию в методе IBAction, например:
- (IBAction) stopDictionary:(UIBarButtonItem *) sender {
[self closeDatabase];
[self willReleaseObjects];
[self dismissModalViewControllerAnimated:YES];
}
Я отладил код, и он фактически выполняет каждый выпуск, однако при диагностике выделения памяти с помощью инструментовКажется, это освобождает только частичную память, фактически почти ничего, поэтому потребление памяти, конечно, увеличивается с каждым разом, когда я снова загружаю это представление, что совсем не хорошо.Любая идея, почему моя память не освобождается здесь?Спасибо.