我在A类中有一个功能,当按下按钮时显示视图控制器B.但我发现视图控制器B的初始函数(也包含viewdidload和viewwillapear)需要几秒钟。
- (void)showCataloguesBook:(id)sender
{
UIButton *btn = (UIButton *)sender;
CataloguesCoverView *coverView = (CataloguesCoverView *)[_coversArray objectAtIndex:btn.tag];
NSString *bookID = [[self.dataArray objectAtIndex:btn.tag] objectForKey:@"bookID"];
PageCurlViewController *viewController = [[PageCurlViewController alloc] initWithNibName:nil bundle:nil];
viewController.defaultSize = coverView.image.size;
viewController.bookID = bookID;
[self presentViewController:viewController animated:YES completion:nil];
}
在视图中,控制器B的功能包含搜索CoreData,添加subViewController(UIPageViewController)等等,我无法更好地改进它。那么,我可以做些什么来减少按下按钮和显示视图控制器B之间的等待时间?
答案 0 :(得分:1)
缓存。
这样做的一个非常简单的方案是为viewController B设置一个属性,然后在viewController A的viewDidLoad
中实例化它并将其存储在属性中,然后当你需要使用时它就会准备就绪它,你不需要做任何处理。
你应该采取预防措施,并确保摆脱didReceiveMemoryWarning
中的viewController。
如果您需要做更多尝试,请在NSCache中缓存每个可能的选项,这将自动管理内存。如果你想变得复杂,你可以在应用程序使用NSOperationQueue和NSOperation加载时在后台线程中运行所有这些。
您还可以创建一个较小的查询来保存一些信息并立即显示,然后执行更大的查询以便稍后获取更多信息。
有很多方法可以做到这一点,大多数情况下你只需要提出一种智能方式来存储一些数据。