使用不推荐的setStatusBarHidden方法时的Xcode警告

时间:2010-07-10 09:59:23

标签: iphone iphone-sdk-3.0

我在StackOverflow上发现了这个问题,但无法解决我的问题。

Calling the appropriate setStatusBarHidden per iOS version

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

我将操作系统部署目标设置为3.0,但我仍然收到警告'setStatusBarHidden:animated:is deprecated'

如果可能的话,我想在项目中没有警告,而不是删除它的黑客。有没有办法设置项目来删除此警告?

我已将项目库SDK设置为4.0。 目标Base SDK到4.0,部署目标SDK到3.0。

我为“所有配置”进行了这些设置

更新:显然警告仅出现在模拟器中,而不是在为设备设置时出现。

3 个答案:

答案 0 :(得分:4)

弃用警告意味着您正在使用将来不再支持的内容。此特定语法列为已弃用here。您可以通过不使用已弃用的方法来消除警告。您应该使用setStatusBarHidden:withAnimation:而不是

如果您希望在3.0和3.2+上支持此功能,则必须根据目标版本编写条件代码。有一些关于预处理器宏和函数的有用信息可以帮助您here

答案 1 :(得分:3)

这可能会有所帮助,如果你为旧设备开发,不确定最后一个,但它看起来不错:

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
else if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: animated:)])
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];
}
else if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden:)])
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
}

然而,在我将设备从iPhone切换到Universal并返回iPhone之后,出现了问题。花了一些时间才意识到部署目标已经改为4.3,所以将其更改回3.0会使警告消失。

答案 2 :(得分:1)

您可以像这样执行以立即克服警告

#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
(void) methodUsingDeprecatedStuff { //use deprecated stuff }

只需在每次使用弃用的内容之前粘贴此行以避免警告

#pragma GCC诊断警告“-Wdeprecated-declarations”

这将删除警告。

希望它会对你有所帮助。