2

我有一个带有 2 个日期选择器的 xib 文件,其中有几个标签和一个段控件。我正在将 xib 的关联视图控制器加载到弹出窗口中,并且仅在您第一次打开它时加载速度非常慢(加载约 5 秒)。因此,我在 open popover 方法及其父级 init 方法之外引用了日期选择器控制器的视图,并且确实加载父视图控制器现在加载速度很慢,而 open popover 方法运行得很快。所以我得出的结论是 xib 文件连接出口/加载速度很慢。

从日期选择器控制器的 viewDidLoad 和 init 方法中删除所有内容并没有帮助。

删除 1 个日期选择器大大提高了速度,添加更多日期选择器似乎根本不会影响速度。

发生在 ios 5.1 和 6.0 上。

我可以通过调度另一个线程在启动时加载它来解决它,但无论如何我知道为什么这会很慢?我已经看到其他应用程序在一个视图中使用多个日期选择器没有问题。

4

1 回答 1

3

解决方案只是在应用程序启动时加载它并继续重复使用相同的控制器,这将导致一个小的启动延迟,但它比无响应的控件更好,所以在你的应用程序委托中调用如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  //only use this one controller, allocing another one will be just as slow
  self.datecontrollerwith2pickers = [[datecontrollerwith2pickers alloc] init];
  //forces xib to load
  self.datecontrollerwith2pickers.view;
}

加载缓慢绝对是Apple代码中某处的错误。

于 2013-07-16T16:53:10.820 回答