3

私が取り組んでいるアプリの一部には UIPageViewController が含まれており、各ページには Core Data に保存されている「エントリ」が表示されます。エントリには、とりわけ、圧縮されて NSData として保存されるいくつかの画像が含まれます。したがって、これらの画像を読み込んでページに表示するには、imageWithData を使用します。

photo.image = [UIImage imageWithData:entry.photo];

問題は、imageWithData が特に高速ではないことです。そのため、ページをめくっても思ったほど反応がよくありません。この状況を改善するための最善の試みは、UIPageViewController によって表示される多数のビュー コントローラーを配列にプリロードすることでした。(それが最善かどうかはわかりませんが、これで終わりです)

したがって、明確にするために、viewControllerA を含むナビゲーション コントローラーがあり、viewControllerB にリンクします。これは、UIPageView と entryControllers (各ページに 1 つの entryController) を表示します。問題は、ナビゲーション バーを使用して viewControllerB から viewControllerA に戻るときに、viewControllerB の entryControllers の配列をメモリから解放することです。しかし、ARCはそうしていないようです。したがって、viewControllerA と viewControllerB の間を数回行ったり来たりして、毎回数ページをめくると、メモリ警告が表示され始めます。これにより、現在の entryControllers の配列がクリアされ、その配列を持つ目的が無効になります。その後、メモリの警告が表示されるたびにエントリをリロードする必要があります。

つまり、ARC は、ナビゲーション コントローラーを介して viewControllerA に戻ったときに、viewControllerB に割り当てたメモリをクリアしていません。私はそれが好きではありません。誰かがこれが起こっている理由を示唆したり、私がこのすべてを間違った方法で行っているかどうかを教えてくれたりすると、非常に高く評価されます. あるページから次のページへの移行をスピードアップしようとしているだけです。

本当にありがとう。

4

2 に答える 2