0

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

4

1 回答 1

1

缓存。

这样做的一个非常简单的方案是为 viewController B 设置一个属性,然后在viewDidLoadviewController A 中实例化它并将其存储在属性中,然后在您需要使用它时就可以使用它并且您不需要做任何处理。

您可能应该采取预防措施,并确保在didReceiveMemoryWarning.

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

您还可以进行较小的查询以保存一些信息并立即呈现,然后再进行较大的查询以获取更多信息。

有很多方法可以做到这一点,大多数情况下,您只需要想出一种聪明的方法来存储一些数据,然后再呈现。

于 2013-10-02T05:36:36.967 回答