iPhone - insertSubview заставляет ObjectAlloc перейти - PullRequest
0 голосов
/ 17 сентября 2009

Каждый раз, когда я добавляю новый viewController, мой ObjectAlloc поднимается очень высоко и никогда не возвращается обратно.Даже после вызова removeFromSuperview.Это нормально?

if((UIButton *) sender == gameArcadeBtn) {
        GameArcade *gameArcadeController = [[GameArcade alloc] 
                              initWithNibName:@"GameArcade" bundle:nil]; 
        self.gameArcade = gameArcadeController; 
        [gameArcadeController release]; 
        [self.view insertSubview:gameArcadeController.view atIndex:1];
    }

Ответы [ 2 ]

0 голосов
/ 17 сентября 2009

это, вероятно, связано с тем, что вы все еще сохраняете контроллер представления в классе. попробуйте выпустить это

0 голосов
/ 17 сентября 2009

Создание экземпляра всегда создает много объектов. Пока это представление находится в памяти или не было автоматически выпущено, объекты останутся размещенными в памяти. Таким образом, чтобы ответить на ваш вопрос, это нормально.

Похоже, вы беспокоитесь об использовании памяти, и хотя важно следить за распределением объекта, чтобы он не получал слишком , более важно обнаружить утечки вашего приложения.

Некоторые советы по управлению памятью:
1) делать ленивую загрузку. Загружайте свои представления только тогда, когда их запрашивает пользователь, а не все в начале приложения.
2) удалите все, что возможно, когда оно вам больше не нужно. Это означает выполнение огромного количества работы в viewWillAppear и viewDidDisappear
3) узнайте о @properties и о том, как оно связано с автоматическим выпуском, и не используйте свойства для всего.
4) Каким бы привлекательным это ни было, избегайте автоматического освобождения и освобождайте объекты вручную, когда они вам больше не нужны.

...