ios – Xcode 6.3中的“打开设置”警告问题:“UIApplicationOpenSettingsURLString”的地址与空指针的地址比较始终为true

我不是在发明轮子.在iOS8中,要从应用程序内部打开“设置”,我正在使用此代码
BOOL canopenSettings = (&UIApplicationopenSettingsURLString != NULL);

if (canopenSettings)
{
    NSURL *url = [NSURL URLWithString:UIApplicationopenSettingsURLString];
    [[UIApplication sharedApplication] openURL:url];
}

代码在stackoverflow中有很多答案和问题.

问题出现在Xcode 6.3上,我有一个警告说:

‘UIApplicationopenSettingsURLString’的地址不等于空指针的比较始终为true

有趣的是Apple在他们的示例代码中使用它:
https://developer.apple.com/library/ios/samplecode/AppPrefs/Listings/RootViewController_m.html

关于如何避免警告并仍然检查我是否可以打开设置的一些想法?

解决方法

解决了:

该问题与应用程序中的部署目标有关.

如果目标是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];
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...