Xcode 6.3 中的打开设置警告问题: 'UIApplicationOpenSettingsURLString' 不等于空指针的地址比较始终为真
Open Settings warning issue in Xcode 6.3: Comparison of address of 'UIApplicationOpenSettingsURLString' not equal to a null pointer is always true
我不是在发明轮子。在 iOS8 中,要从应用程序内部打开设置,我正在使用此代码:
BOOL canOpenSettings = (&UIApplicationOpenSettingsURLString != NULL);
if (canOpenSettings)
{
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
代码在Whosebug的很多答案和问题中。
问题出现在 Xcode 6.3,我收到警告说:
Comparison of address of 'UIApplicationOpenSettingsURLString' not equal to a null pointer is always true
有趣的是,Apple 在他们的示例代码中使用了它:
https://developer.apple.com/library/ios/samplecode/AppPrefs/Listings/RootViewController_m.html
关于如何避免警告并仍然检查我是否可以打开“设置”的一些想法?
已解决:
问题与应用程序中的部署目标有关。
如果 Target 为 8.0 或以上,则比较将始终为真,因为您始终超过 8.0。所以我们不需要if验证:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
另一个选项可以是:
NSURL *settings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:settings])
{
[[UIApplication sharedApplication] openURL:settings];
}
我相信这是因为 &UIApplicationOpenSettingsURLString 在此版本中永远不会为 nil,因此您可以直接使用以下命令启动设置:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
我不是在发明轮子。在 iOS8 中,要从应用程序内部打开设置,我正在使用此代码:
BOOL canOpenSettings = (&UIApplicationOpenSettingsURLString != NULL);
if (canOpenSettings)
{
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
代码在Whosebug的很多答案和问题中。
问题出现在 Xcode 6.3,我收到警告说:
Comparison of address of 'UIApplicationOpenSettingsURLString' not equal to a null pointer is always true
有趣的是,Apple 在他们的示例代码中使用了它:
https://developer.apple.com/library/ios/samplecode/AppPrefs/Listings/RootViewController_m.html
关于如何避免警告并仍然检查我是否可以打开“设置”的一些想法?
已解决:
问题与应用程序中的部署目标有关。
如果 Target 为 8.0 或以上,则比较将始终为真,因为您始终超过 8.0。所以我们不需要if验证:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
另一个选项可以是:
NSURL *settings = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:settings])
{
[[UIApplication sharedApplication] openURL:settings];
}
我相信这是因为 &UIApplicationOpenSettingsURLString 在此版本中永远不会为 nil,因此您可以直接使用以下命令启动设置:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];