UIPageViewController аварийно завершает работу при слишком быстром перелистывании при нехватке памяти

У меня были некоторые проблемы с памятью из-за шаблона Xcode для UIPageViewController, кэширующего все данные страницы, поэтому я изменил его для динамической загрузки страниц, поэтому теперь, когда мое приложение получает предупреждение о нехватке памяти, оно освобождает память для страницы, которая не отображается, но если пользователь очень быстро пролистывает страницы, нажимая на край экрана, он все равно падает. Я предполагаю, что это связано с тем, что он не может достаточно быстро освободить память, когда вызывается didReceiveMemoryWarning. Если пользователь листает медленно, все работает нормально. Я ограничил скорость, с которой пользователь может перелистывать страницы, но это все равно происходит. Я хочу иметь возможность освобождать память каждый раз, когда страница переворачивается, и не ждать предупреждения о нехватке памяти. Я использую АРК. Есть ли способ сделать это? Или что еще я могу сделать, чтобы предотвратить это? Спасибо.

РЕДАКТИРОВАТЬ:

(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSUInteger index = [self indexOfViewController:(SinglePageViewControllerSuperclass *)viewController];
    if ((index == 0) || (index == NSNotFound)) {
        return nil;
    }

    index--;
    return [self viewControllerAtIndex:index];
} 

(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger index = [self indexOfViewController:(SinglePageViewControllerSuperclass *)viewController];
    if (index == NSNotFound || index == MAX_PAGE_INDEX) {
        return nil;
    }

    return [self viewControllerAtIndex:++index];
}
19
задан pixelistik 3 June 2012 в 21:45
поделиться