Как это возможно вернуть не ноль на iPhone 3.1.3 (3g iPhone)?
- (BOOL) isIOS3_2OrAbove
{
Class mplayerControllerClass = NSClassFromString(@"MPMoviePlayerViewController");
if(mplayerControllerClass != nil)
{
NSLog(@"MPMoviePlayerViewController not showing NIL! It is: %@\n",[mplayerControllerClass description]);
return YES;
}
else
{
NSLog(@"MPMoviePlayerViewController is showing NIL!\n");
return NO;
}
}
Я получил это возвращено:
MPMoviePlayerViewController not showing NIL! It is: MPMoviePlayerViewController
Как это может произойти? Я использую устройство XCode 3.2.3 через USB.
Вот код, вызывающий его:
NSString *movieName = @"litedefault.mp4";
if ([self isIOS3_2OrAbove] == YES)
{
movieName = @"litedefault_3_2.mp4";
}
NSString *moviePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:movieName];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:moviePath ]];
moviePlayer.movieControlMode = MPMovieControlModeHidden;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(set_up_views:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];
if ([self isIOS3_2OrAbove] == YES)
{
NSLog(@"IS iOS3.2 or above\n");
moviePlayer.view.frame = CGRectMake(0, 0, 320, 480);
[window addSubview:moviePlayer.view];
[window makeKeyAndVisible];
}
else
{
NSLog(@"IS BELOW iOS3.2\n");
}
[moviePlayer play];
Поймите, что я хочу протестировать ЛЮБОЕ устройство более 3.2, поэтому я, например, не тестирую UI_USER_INTERFACE_IDIOM
. Как видите, 3.2 или выше требует добавления MPMoviePlayerController к представлению.
Есть идеи?
Добавление:
Похоже, что мы должны проверить класс, который НЕ является частным APi (в предыдущем выпуске iPhone OS). Я также протестировал UILongPressGestureRecognizer (который на самом деле присутствует, но приватный в 3.1.3) и получил ненулевой результат.
Ладно .... итак, этот вопрос в основном просто изменился на: Кто-нибудь знает API, который я могу проверить, но НЕ в 3.1.3 (или более ранней)?
Urgh!