我在应用程序中使用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
相比,这两个键总是正确的。
我相信我缺乏计算机科学培训,这让我无法理解这里的问题——也许这只是一种糟糕的看法?
我已经看了这个问题,但无法理解与Google Drive SDK实现文件GTMOAuth2ViewControllerTouch.m 问题相关的上下文
我真的很想了解根本问题。
请帮忙。。。
您可以使用以下代码段来代替这些代码段:accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
和[keychainQuery setObject:(id)accessibility forKey:(id)kSecAttrAccessible];
这是因为常量永远不会有NULL指针,所以没有理由进行检查。我相信SDK的更新是可以修复的,但你可以手动完成。
Apple在编译器中添加了一个新的检查,当这些检查永远不会失败时会发出警告,但不幸的是,它是根据当前的部署目标进行的。然而,对于我们这些在具有多个部署目标的项目之间共享代码的人来说,这个新功能确实令人头疼。
有人告诉我,你可以通过在编译器标志中添加-Wno同义重复指针compare来全局禁用警告,或者通过将"&whatever"括在括号中来一次性禁用警告。