今天,我的应用程序获得批准,但收到用户的电子邮件说它崩溃了。我发现

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];


是问题所在,因为用户的固件为3.1.x,此API无法正常工作,导致应用崩溃。

所以我用

    if ([[[UIDevice currentDevice] systemVersion] floatValue]>=3.2)
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];
    else
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];


我的问题...

是我做的最好的解决方案?

为什么在我设置Traget OS固件3.0时XCODE并没有警告我SetStatusBarHidden withAnimation不在3.0中?

我是否必须检查每个API以查看其是否与我的目标操作系统一起使用?

谢谢

最佳答案

我建议您使用以下代码段,而不是对照os的版本,而不是检查选择器当前是否可用。

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
else
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];

07-26 09:39