我有一个带有2个日期选择器的xib文件,里面有几个标签和一个段控件。我正在将xib的相关视图控制器加载到弹出窗口中,并且只在第一次打开它时加载速度非常慢(加载约5秒)。所以我在打开的popover方法之外和它的父类init方法中引用了日期选择器控制器的视图,并确保加载父视图控制器现在加载缓慢,并且打开的popover方法很快。所以我得出的结论是连接出口/加载的xib文件很慢。
从日期选择器控制器的viewDidLoad和init方法中删除所有内容都无济于事。
删除1个日期选择器可显着提高速度,添加更多日期选择器似乎根本不会影响速度。
发生在ios 5.1和6.0上。
我可以通过调度另一个线程在开始时加载它来解决它,但无论如何都有一个线索为什么这会很慢?我已经看到其他应用程序在一个视图中使用多个日期选择器没有任何问题。
答案 0 :(得分:3)
解决方案只是在应用启动时加载它并继续重复使用相同的控制器它会导致一个小的启动延迟,但它比无响应的控件更好,所以在你的app委托调用这样的事情:
- (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代码中的一个错误。