故事板中的视图太多 - Xcode运行缓慢

Bro*_*Eye 32 performance xcode storyboard ios

我正在用xcode项目帮助某人,但这几乎是不可能的.他们的故事板上有大约100个View控制器,它运行速度非常慢.我已经遵循了所有关于使Xcode更快的指南,但他们对这种情况没有帮助.在那个故事板之外,当我们在.h和.m文件中工作时,它运行得非常好,它只是在故事板内运行缓慢.有没有人对这样的项目有过任何经验?你做了什么?或者我该怎么做才能在故事板中工作?谢谢

red*_*cta 48

我的解决方案是:从故事板中打开一个新窗口并将其最小化.所以它保留在RAM中,不会重新加载.使用故事板现在可以快速轻松地完成.

  • 即使使用Xcode 9,仍然是一个非常好的主意. (2认同)

Nit*_*hel 42

我在使用企业应用程序时遇到了同样的问题.在项目中,我storyboard在一个故事板中只有一个和所有视图.打开故事板导致Xcode变得非常慢.

所以我将故事板分成多个故事板作为模块方式,并为每个模块加载一个单独的故事板,如下面的代码所示:

如果我想推送一个视图控制器:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"storyboardName" 
                                                     bundle:nil];
UIViewController *viewController = 
 [storyboard instantiateViewControllerWithIdentifier:@"Members_ViewController"];

[self.navigationController pushViewController:viewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要从一个视图控制器转换到另一个视图控制器,它们必须位于同一个故事板中.这就是为什么,如果你有多个故事板,每个故事板应该代表你的应用程序中的一个主要路径(或"故事").例如,如果您有一个带有4个选项卡的选项卡驱动的应用程序,其中每个选项卡都有一个导航控制器层次结构,您可以有4个故事板,每个选项卡一个.当你设置UITabBarController时,你必须使用```UIStoryboard*tab1SB = [UIStoryboard storyboardWithName:@"foo"bundle:nil]```等来实例化每个标签的根视图控制器. (9认同)
  • 该应用程序有4个标签,你认为我们应该制作4个故事板吗?(每个标签一个)? (2认同)

Cra*_*ote 8

我们遇到了同样的问题,通常建议的性能调整没有帮助.在带有SSD的MacBook Pro上,我在故事板视图中看到CPU利用率达到80-90%,导航滞后非常令人沮丧.模拟器可能需要一分钟才能显示,而Xcode通常不会关闭,需要强制退出.

如果不查看故事板,或者如故事板作为源代码打开,这些症状都会消失.

更新:我们将项目拆分为多个故事板,生活再次良好 - CPU利用率恢复到个位数,性能与Xcode 4.6.3相当.大型故事板肯定存在问题; 在此过程中对我们的代码所做的唯一更改是将对主故事板的引用更新为storyboardWithName调用.

我们项目中的一个视图控制器有一个容器视图,当控制器及其容器视图移动到一个单独的故事板时,似乎停止了利用率问题.这可能是巧合,为了保持一致性,我们分解了故事板的其余部分,但如果我再次处理这个问题,我首先将任何带有容器视图的视图控制器移动到一个单独的故事板.


bas*_*nce 7

如果您使用的是Xcode 7,故事板参考是创建多个故事板的快捷方式,肯定会有助于解决此问题.使用Storyboard References的好处是它不涉及任何额外的代码!有关如何设置的完整说明,请参阅下面的stackoverflow链接.

在此输入图像描述 /sf/answers/2154095261/