Наше приложение работает каждый раз без сбоев на всех устройствах iOS, с которыми мы тестировали (свежая установка или обновление из xcode/adhoc production/debug, мы пробовали их все). Но при проверке приложения его отклоняют, потому что кажется, что ресурс по требованию никогда не становится доступным, даже если загрузка ресурса завершается без ошибок.
Мы обращаемся к ресурсу в области блокировки обратного вызова камеры. Если ресурс доступен, мы идем дальше и используем его, в противном случае мы делаем beginAccessingResourcesWithCompletionHandler() и блокируем бесплатный обратный вызов только после завершения загрузки. Проблема в том, что обозреватель приложения говорит, что оно загружается (для этого есть индикатор выполнения), а затем продолжает просить повторную загрузку снова и снова. Почему он был бы недоступен, если он только что успешно завершил загрузку (обратите внимание, что ошибки нет)?
[request conditionallyBeginAccessingResourcesWithCompletionHandler:^(BOOL resourcesAvailable) {
if (resourcesAvailable)
{
/* use the resource. */
/* unblock the callback. done. */
}
else
{
/* ask to download resource */
[request beginAccessingResourcesWithCompletionHandler:^(NSError * _Nullable error) {
if (error)
{
NSLog(@"%@", error);
/* don't unblocked. return. will hang. */
}
/* unblock the callback. done. resource should be available next camera frame. */
}];
} }];
Также это не проблема нехватки памяти. У нас есть это покрыто и протестировано. Более того, beginAccessingResourcesWithCompletionHandler() возвращает без ошибок.