Ios 更新Xcode 6.3断开应用程序-谷歌GTLTouchStaticLib“;“不等于空指针始终为真”;

Ios 更新Xcode 6.3断开应用程序-谷歌GTLTouchStaticLib“;“不等于空指针始终为真”;,ios,google-drive-api,comparison,xcode6.3,Ios,Google Drive Api,Comparison,Xcode6.3,我在我的应用程序中使用Google Drive SDK 自2014年6月左右以来,它一直运转良好 在升级到Xcode 6.3之后,我的目标没有一个是构建 实现文件GTMOAuth2ViewControllerTouch.m包含编译器抱怨的两个块: if (accessibility == NULL && &kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly != NULL) { accessibilit

我在我的应用程序中使用Google Drive SDK

自2014年6月左右以来,它一直运转良好

在升级到Xcode 6.3之后,我的目标没有一个是构建

实现文件GTMOAuth2ViewControllerTouch.m包含编译器抱怨的两个块:

if (accessibility == NULL
    && &kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly != NULL) {
        accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
}
特别是消息:“首次解锁此设备后,
ksecattraccessibleafterfirst的地址比较仅
不等于空指针始终为真”

特别是消息:“不等于空指针的
ksecattracessible
地址的比较始终为真”

编译器告诉我,与
!=NULL
始终为真

我相信我缺乏计算机科学培训,这让我无法理解这里的问题——也许这只是一个不好的看法

我已经查看了Google Drive SDK实现文件GTMOAuth2ViewControllerTouch.m,但无法理解与我的问题相关的上下文

我真的很想了解潜在的问题


请帮助…

您可以使用以下代码段代替这些代码段:
accessibility=ksecattracccessibleafterfirst仅解锁此设备
[keychainQuery setObject:(id)accessibility forKey:(id)kSecAttrAccessible]


这是因为常量永远不会有空指针,所以没有理由进行检查。我相信SDK的更新是可以修复的,但您可以手动进行。

苹果在其编译器中添加了一个新的检查,当这些检查永远不会失败时发出警告,但不幸的是,它是基于当前部署目标进行的。但是,对于我们这些在具有多个部署目标的项目之间共享代码的人来说,这一新特性确实令人头痛


我被告知,您可以通过在编译器标志中添加-Wno重言式指针compare来全局禁用警告,或者通过将“&where”括在括号中一次性禁用警告。

感谢您在@schemetral中的及时帮助。所有目标都将根据您建议的更改生成-谢谢。希望我本想检查Google SDK,但在编写过程中结束了手动更改。你能解释为什么在Xcode 6.2/iOS 8.2和Xcode 6.3/iOS 8.3之间发生了更改吗?我相信代码是用来检查常量是否存在的。在6.3中,Xcode现在会检查您使用的iOS版本,静态分析器会针对不必要的代码(例如,将某些代码与其他代码进行比较总是错误的)抛出错误。
if (accessibility != NULL && &kSecAttrAccessible != NULL) {
    [keychainQuery setObject:(id)accessibility
                      forKey:(id)kSecAttrAccessible];
}