2010-08-02 1 views
1

Я создаю приложения iPhone с помощью iPhone SDK 4.0.1 Я следующие строки кода в моем приложении, связанные с уведомлениями от медиаплеераiphone - работает SDK 4.0.1 на Iphone 3,1

[[NSNotificationCenter defaultCenter] 
     addObserver:self 
      selector:@selector(moviePreloadDidFinish:) 
       name:MPMoviePlayerLoadStateDidChangeNotification 
      object:m_player]; 

При создании приложения я нацелен на продукт на iphone 3.1. Его здание прекрасно работает и работает на устройстве iphone 4.0. Но приложение само сбой при работе на iphone 3.1.3 ОС. Его подача следующее сообщение:

dyld: Symbol not found: _MPMoviePlayerLoadStateDidChangeNotification 

Реферировано от: /var/mobile/Applications/8572A1FF-488D-4F97-93DD-C06DBAD23B5B/OrangeDemo.app/OrangeDemo Ожидаемое в:/System/Library/структур по/MediaPlayer. рамки/MediaPlayer в /var/mobile/Applications/8572A1FF-488D-4F97-93DD-C06DBAD23B5B/OrangeDemo.app/OrangeDemo

Как я могу избежать этой ошибки.

ответ

1

MPMoviePlayerLoadStateDidChangeNotification не существует на iOS 3.1.3. Вы должны обнаружить свое присутствие с помощью слабого связывания:

if (&MPMoviePlayerLoadStateDidChangeNotification != NULL) { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePreloadDidFinish:) name:MPMoviePlayerLoadStateDidChangeNotification object:m_player]; 
} 

Перед прошивкой 3.2 вы можете использовать MPMoviePlayerContentPreloadDidFinishNotification обнаружить, когда фильм закончил поджимать. Этот символ может генерировать предупреждение устаревания, если вы связываете против новой SDK

Обратите внимание на синтаксис проверки символа (как вы, если вы используете MPMoviePlayerLoadStateDidChangeNotification.): Вы должны сравниваться NULL, а не просто с помощью указатель как логический (то есть if (MPMoviePlayerLoadStateDidChangeNotification) или if (&MPMoviePlayerLoadStateDidChangeNotification).) Компилятор и динамический загрузчик не могут обнаружить и надлежащим образом обрабатывать эти формы и будут разбиваться на 3.1.3, если они обнаружены.

+0

Как небольшое разъяснение, то, что вы здесь описываете, - это как определить наличие метода. Он по-прежнему будет нуждаться в слабой связи, найдя цель приложения в Xcode, проверив ее и перейдя на вкладку «Общие». В нижней части этой вкладки должен быть список фреймворков с столбцом для Type. Измените тип для MediaPlayer от обязательного к слабым. –

+0

Вам не нужно переключать тип фреймворка, поскольку он был включен с iOS 2.0. –

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

  • Нет связанных вопросов^_^