iPhone - insertSubview заставляет ObjectAlloc перейти
-
08-07-2019 - |
Вопрос
Всякий раз, когда я добавляю новый 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) Каким бы привлекательным это ни было, избегайте автоматического освобождения и освобождайте объекты вручную, когда они вам больше не нужны.
Другие советы
Это, вероятно, связано с тем, что вы все еще сохраняете контроллер представления в классе. попробуйте выпустить это