Поскольку MPMoviePlayerDidExitFullscreenNotification является символом, он должен быть известен во время (динамического) соединения для любых версий. Проверка времени выполнения не помогает.
Чтобы решить эту проблему, вам нужно отложить загрузку этого во время выполнения. Вы можете использовать dlsym
:
NSString* x_MPMoviePlayerDidExitFullscreenNotification
= dlsym(RTLD_DEFAULT, "MPMoviePlayerDidExitFullscreenNotification");
if (x_MPMoviePlayerDidExitFullscreenNotification != nil) {
[[NSNotificationCenter defaultCenter] addObserver:self ...];
}
В качестве альтернативы, вы можете сделать MPMoviePlayerDidExitFullscreenNotification слабым символом , поэтому, когда dyld
не находит этот символ, вместо сбоя он просто устанавливает его в NULL.
Наконец, поскольку MPMoviePlayerDidExitFullscreenNotification является просто константной строкой, вы можете просто использовать
… name:@"MPMoviePlayerDidExitFullscreenNotification" …
Но содержимое этой строки - деталь реализации. Нет гарантии (хотя и редко), что Apple не изменит это на что-то другое в более поздних версиях.