2 строки означают, что он не будет работать на iPad - PullRequest
1 голос
/ 21 июля 2010

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

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

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

"Data Formatters временно недоступен"

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

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

и

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

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

Есть идеи?Приветствия

Ответы [ 3 ]

4 голосов
/ 21 июля 2010

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

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

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

if (NSClassFromString(@"AVURLAsset")) {
    // 4.0 code using AVURLAsset goes here
} else {
    // 3.0 code goes here
}
4 голосов
/ 21 июля 2010

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

Я описываю, как слабое связывание фреймворка в ответ на подобную проблему в этот ответ .

0 голосов
/ 21 июля 2010

Попробуйте (или аналогично):

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

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

...