内存消耗的同时保持运行的应用程序增加(Memory consumption keeps increa

2019-09-18 20:09发布

我在与相应的视图控制器应用程序的多个视图。 我在做什么如下。

这里是更能说明问题的代码:

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
  View1Controller *viewController1 = [[View1Controller alloc] initWithnibName:@"View1"];
  View2Controller *viewController2 = [[View2Controller alloc] initWithnibName:@"View2"];
  View3Controller *viewController3 = [[View3Controller alloc] initWithnibName:@"View3"];

  [window addSubview:viewController1.view];
  [window makeKeyAndVisible];
}

在View1Controller文件:

对于一些按钮操作

- (IBAction) goTOView2:(id)sender
{
  iPhoneApplicationAppDelegate *appDelegate = (iPhoneApplicationAppDelegate*) [[UIApplication sharedApplication] delegate];
  [appDelegate.window.superView removeFromSuperview];
  [appDelgate.window addSubview: appDelgate.viewController2.view];
}

同样,对于VIEW3

我保留了所有这三个视图控制器在我的应用程序委托。 当我想切换到另一种观点我有下面的代码。

不要去对代码的语法错误。

这三个视图控制器有自己的导航控制器的多视图这对于推动和弹出不同的看法。

我的问题是,当我使用仪器运行该应用程序,我看到我经常从一个视图到另一个内存消耗不断增加。

请提前帮助和感谢。

Answer 1:

添加和从您的应用程序的窗口去除观点不是视图控制器之间切换的推荐方式。 您应该使用中的UITabBar一样,并让的UITabBarController处理您的视图控制器。

你的内存消耗不断增加为您的应用程序运行,你是分配更多的目标手段的事实。 它可能没有任何与你切换视图的方式。 你最有可能分配对象和遗忘释放出来 - 导致内存泄漏。 你应该尝试使用仪器泄漏的工具,以确定哪些行代码是造成你的问题。 (或交更多的在这里!)



Answer 2:

在“泄漏”工具通常不会在你看记忆慢慢长大,这些往往不是意外泄漏保留,但对象的情况下帮助。

在对象分配工具,选择“创建和仍然生活”的选项。

在图中,你看到更多的内存使用,当你希望创建任何新的内存,然后选择一个区域。 按照这些信息,看看是什么原因创造你是不是期待的对象..

另外,你说你要设置这些视图控制器的性能。 因此,这意味着你的applicationDidFinishLaunching设置它们正是这样:

self.viewController1 = viewController1;

对?



Answer 3:

这条线看起来错误:

[appDelegate.window.superView removeFromSuperview];

你想要的是一样的东西:

[viewController1.view removeFromSuperview];

这取决于查看你从移开。



文章来源: Memory consumption keeps increasing while running application