0

ボタンが押されたときにビューコントローラーBを表示するクラスAの機能があります。しかし、View Controller 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) の追加などが含まれており、これ以上改善することはできませんでした。では、ボタンを押してからView Controller Bを表示するまでの待ち時間を短縮するにはどうすればよいでしょうか?

4

1 に答える 1

1

キャッシング。

これを行うための非常に簡単なスキームは、viewController B のプロパティを設定し、それviewDidLoadを viewController A のインスタンス化してプロパティに格納することです。そうすれば、使用する必要があるときに準備が整い、使用する必要がなくなります。任意の処理を行います。

おそらく予防策を講じて、 で viewController を確実に取り除く必要がありdidReceiveMemoryWarningます。

さらに行う必要がある場合は、メモリを自動的に管理する NSCache で可能な各オプションをキャッシュしてみてください。複雑にしたい場合は、NSOperationQueue と NSOperation を使用して、アプリの読み込み時にこれらすべてをバックグラウンド スレッドで実行できます。

また、小さなクエリを作成して一部の情報を保存してすぐに表示し、後でより多くの情報を取得するために大きなクエリを実行することもできます。

これを行うには多くの方法がありますが、ほとんどの場合、データの一部を表示する前に保存するスマートな方法を考え出す必要があります。

于 2013-10-02T05:36:36.967 に答える