如何减少初始化视图控制器的时间

时间:2013-10-02 05:04:31

标签: iphone ios objective-c core-data uipageviewcontroller

我在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之间的等待时间?

1 个答案:

答案 0 :(得分:1)

缓存。

这样做的一个非常简单的方案是为viewController B设置一个属性,然后在viewController A的viewDidLoad中实例化它并将其存储在属性中,然后当你需要使用时它就会准备就绪它,你不需要做任何处理。

你应该采取预防措施,并确保摆脱didReceiveMemoryWarning中的viewController。

如果您需要做更多尝试,请在NSCache中缓存每个可能的选项,这将自动管理内存。如果你想变得复杂,你可以在应用程序使用NSOperationQueue和NSOperation加载时在后台线程中运行所有这些。

您还可以创建一个较小的查询来保存一些信息并立即显示,然后执行更大的查询以便稍后获取更多信息。

有很多方法可以做到这一点,大多数情况下你只需要提出一种智能方式来存储一些数据。