Я изо всех сил стараюсь очень чисто решить проблему, связанную с перегрузкой памяти (управление).У меня есть серия представлений, которые включают другие представления, в моем проекте у меня есть такая ситуация:
MainView
| _PageView
| _CustomButton
Су так хорошо, легко, как торт.У CustomButton есть делегат (протокол) в нем по некоторым причинам, поэтому в PageView есть цикл for, который создает N CustomButtons, устанавливаем делегат как self в PageView (PageVew extension CustomButtonDelegate) и отпускаем кнопки, прикрепляя их как
{
CustomButton *customButton_ = [[CustomButton alloc] initWithFrame:CGRectMake(100.0,50+(i*55.0),200.0);
customButton.delegate = self;
[self addSubView:customButton_];
[customButton_ release];
}
так хорошо, снова хорошо.Кнопка будет нажата, PageView получить метод протокола, сделать код и вуаля, готово.Одна проблема заключается в том, что в какой-то момент MainView должен удалить PageView, поэтому в методе, который я вызываю
[pageView_ removeFromSuperview];
[pageView release], pageView_ = nil;
pageView_ = [PageView alloc] initWithFrame.....];
, я воссоздаю объект с другими данными для отображения.Я заметил, что PageView никогда не выпускается и не удаляется из памяти, потому что его retainCount - это ровно столько CustomButton, которое я создал внутри PageView, и, конечно же, присваиваем делегату self и one.Мой вопрос: каков самый чистый способ безопасно удалить все объекты и иметь возможность удалить PageView, освободить память (потому что я загружаю довольно большой объем данных для отображения в нем)?
Прямо сейчася делаю:
Создайте в PageView NSMutableArray, чтобы я CustomButton объекты в нем, и, прежде чем удалить PageView, я циклически повторяю его и устанавливаю делегат = ноль, а затем освобождаю каждый объект, после того как я освобождаюNSMutableArray (называемый "holder").
Но проблема в том, что если я захочу добавить больше объектов разных типов с другими протоколами, добавление в этот массив может привести к другим проблемам с сохранением объектов.
Где мне не хватает парней, знаний, поэтому мне нужно больше учиться (я уверен, что могу сказать) или мне нужно подойти с другим OOD?
Спасибо, ребята, я перегружен этой проблемойи мой мозг застрял в тесной дороге.:)