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

问题描述 投票:3回答:3

我在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。

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

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

iphone iphone-sdk-3.0
3个回答
4
投票

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

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


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会使警告消失。


1
投票

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

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

要么

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

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

这将删除警告。

希望它会对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.