2 строки означают, что он не будет работать на iPad

StackOverflow https://stackoverflow.com/questions/3300336

  •  26-09-2020
  •  | 
  •  

Вопрос

У нас есть проект, который отлично работает на OS4, но у нас возникли проблемы с его запуском на iPad 3.2.

Базовый SDK - 4.0, а цель развертывания - 3.2.

Код завершает работу в симуляторе iPad (и устройстве) еще до его запуска с ошибкой

"Форматировщики данных временно недоступны"

Кажется, все работает нормально, если я уберу 2 строки...

AVURLAsset* asset = [AVURLAsset URLAssetWithURL:assetURL options:options];

и

export = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough];

Я ветвлюсь в соответствии с тем, какая ОС присутствует, так что эти строки никогда не дозвониться когда на устройстве 3.2 (я знаю, что это OS4), но просто их присутствие там вообще приводит к сбою еще до того, как оно начнется.

Есть какие-нибудь идеи?Овации

Это было полезно?

Решение

Если эти линии никогда не достигаются на iPad, вы можете столкнуться с проблемой из-за не слабых связей структуры AVFoundation (и потенциально других).Поскольку Avurlasset и Avassetexpordsion не существуют как символы в 3.2, ваше приложение может быть сбивается при запуске на этой старой ОС.

Я описываю, как слабая ссылку рамки в ответ на похожая проблема в Этот ответ .

Другие советы

Прежде всего, "Форматировщики данных временно недоступны" - это сообщение GDB, это нет почему ваше приложение выходит из строя.Более подробную информацию об этом сообщении можно найти здесь здесь.

Вам нужно проверить доступность классов во время выполнения (не во время компиляции), если вы хотите написать код, который будет работать как на iOS 3.0, так и на 4.0.

Вы можете сделать это с помощью NSClassFromString функционировать подобным образом:

if (NSClassFromString(@"AVURLAsset")) {
    // 4.0 code using AVURLAsset goes here
} else {
    // 3.0 code goes here
}

Попробуйте это (или похоже):

#if __IPHONE_OS_VERSION_MIN_REQUIRED < 40000
  // code for iOS below 4.0
#else
  // code for iOS 4.0
#endif
.

украдена из этот вопрос .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top