Вопрос

Всякий раз, когда я добавляю новый 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];
    }
Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top