我在自己的应用中使用Google Drive SDK。
自2014年6月左右以来,它一直运作良好。
在更新到Xcode 6.3后,我的目标都没有构建。
实施文件 GTMOAuth2ViewControllerTouch.m 包含编译器抱怨的两个块:
if (accessibility == NULL
&& &kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly != NULL) {
accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
}
特别是消息:“kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
的地址比较不等于空指针总是如此”。
和
if (accessibility != NULL && &kSecAttrAccessible != NULL) {
[keychainQuery setObject:(id)accessibility
forKey:(id)kSecAttrAccessible];
}
特别是消息:“kSecAttrAccessible
的地址比较不等于空指针总是如此”。
编译器告诉我,与!= NULL
相比时,这两个键始终为真。
我相信我缺乏计算机科学培训让我无法理解这里的问题 - 也许这只是一种不好的看法?
我查看了this question,但无法理解与我的Google Drive SDK实施文件GTMOAuth2ViewControllerTouch.m
相关的问题。我真的很想了解潜在的问题。
请帮忙......
答案 0 :(得分:7)
您可以使用以下代码来代替这些代码段:
accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
和[keychainQuery setObject:(id)accessibility forKey:(id)kSecAttrAccessible];
这是因为常量永远不会有NULL指针,因此没有理由进行检查。我相信SDK的更新可以修复,但您可以手动完成。
答案 1 :(得分:0)
我告诉你可以通过添加-Wno-tautological-pointer-compare与编译器标志来全局禁用警告,或者通过包装"& whatever&#34来一次性地禁用警告;在括号中。