2013-12-20 6 views
2

Я пытаюсь использовать свой код для совместимости как с iOS 6 & 7, используя синтезированную речь. Я хочу, чтобы это было доступно для прошивки 7 и не доступно для прошивки 6.dyld: Символ не найден: _AVSpeechUtteranceMaximumSpeechRate

Проблемы в том, когда я бег в симуляторе в IOS 6, что дает следующие ошибки еще до того, как имитатора получить, чтобы начать: dyld: Symbol not found: _AVSpeechUtteranceMaximumSpeechRate .

Если я прокомментирую строку: utterance.rate = AVSpeechUtteranceMaximumSpeechRate/4.0f; отлично подходит для iOS 6, даже если она не предназначена для этого.

В чем проблема?

Спасибо.

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { 
      // Load resources for iOS 7 or later 
      AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init]; 
      AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:selectedText]; 
      utterance.rate = AVSpeechUtteranceMaximumSpeechRate/4.0f; 
      utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"]; // defaults to your system language 
      [synthesizer speakUtterance:utterance]; 
      [synthesizer release]; 
     } 
     else{ 
      // Load resources for iOS 6 or earlier 
      UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Sorry" 
                  message:@"This feature requires iOS 7.0 or later" 
                  delegate:Nil 
                cancelButtonTitle:@"OK" 
                otherButtonTitles: nil] autorelease]; 
      [alert show]; 

     } 

ответ

6

Просто добавьте эту строку в верхней части файла:

AVF_EXPORT const float AVSpeechUtteranceMaximumSpeechRate NS_AVAILABLE_IOS(7_0); 

С слабо импортируемого символа, dyld не будет вылетать, если он не находит символ, когда начинается ваше приложение.

+0

Спасибо, это действительно решило проблему –

Смежные вопросы