這怎麼可能在iPhone 3.1.3(3g iPhone)上返回non-nil?NSClassFromString(@「MPMoviePlayerViewController」)在3.1.3(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中是私有的),並且得到了非零結果。
OKAY ....所以,這個問題基本上變成了:任何人都知道一個API,我可以檢查,不在3.1.3(或更早)?
URGH!
OMGosh!我不認爲這會很容易。顯示我不應該沒有咖啡因編程。謝謝! – Jann 2010-06-24 21:52:23