更新到 Xcode 6.3 会破坏应用程序 - Google GTLTouchStaticLib "not equal to a null pointer is always true"
Update to Xcode 6.3 breaks app - Google GTLTouchStaticLib "not equal to a null pointer is always true"
我在我的应用程序中使用 Google Drive SDK。
自 2014 年 6 月左右以来,它一直运行良好。
更新到 Xcode 6.3 后,我的目标构建 none。
实现文件GTMOAuth2ViewControllerTouch.m包含编译器抱怨的两个块:
if (accessibility == NULL
&& &kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly != NULL) {
accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
}
特别是消息:"Comparison of address of kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
not equal to a null pointer is always true"。
和
if (accessibility != NULL && &kSecAttrAccessible != NULL) {
[keychainQuery setObject:(id)accessibility
forKey:(id)kSecAttrAccessible];
}
特别是消息:"Comparison of address of kSecAttrAccessible
not equal to a null pointer is always true"。
编译器告诉我,与 != NULL
相比,这两个键始终为真。
我相信我缺乏计算机科学培训使我无法理解这里的问题 - 也许这只是一种不好的看法?
我看过 ,但无法理解与 Google Drive SDK 实现文件 GTMOAuth2ViewControllerTouch.m
问题相关的上下文
我真的很想了解根本问题。
请帮忙...
您可以使用以下代码代替这些片段:
accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
和 [keychainQuery setObject:(id)accessibility forKey:(id)kSecAttrAccessible];
这是因为常量永远不会有 NULL 指针,所以没有理由进行检查。我相信可以通过 SDK 更新来修复,但您可以手动修复。
Apple 向他们的编译器添加了一个新的检查,当这些检查永远不会失败时发出警告,但不幸的是,它是基于当前的部署目标这样做的。但是,对于我们这些在具有多个部署目标的项目之间共享代码的人来说,这个新功能确实令人头疼。
我听说您可以通过在编译器标志中添加 -Wno-tautological-pointer-compare 来全局禁用警告,或者通过将“&whatever”括在括号中来一次性禁用警告。
我在我的应用程序中使用 Google Drive SDK。
自 2014 年 6 月左右以来,它一直运行良好。
更新到 Xcode 6.3 后,我的目标构建 none。
实现文件GTMOAuth2ViewControllerTouch.m包含编译器抱怨的两个块:
if (accessibility == NULL
&& &kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly != NULL) {
accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
}
特别是消息:"Comparison of address of kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
not equal to a null pointer is always true"。
和
if (accessibility != NULL && &kSecAttrAccessible != NULL) {
[keychainQuery setObject:(id)accessibility
forKey:(id)kSecAttrAccessible];
}
特别是消息:"Comparison of address of kSecAttrAccessible
not equal to a null pointer is always true"。
编译器告诉我,与 != NULL
相比,这两个键始终为真。
我相信我缺乏计算机科学培训使我无法理解这里的问题 - 也许这只是一种不好的看法?
我看过
我真的很想了解根本问题。
请帮忙...
您可以使用以下代码代替这些片段:
accessibility = kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;
和 [keychainQuery setObject:(id)accessibility forKey:(id)kSecAttrAccessible];
这是因为常量永远不会有 NULL 指针,所以没有理由进行检查。我相信可以通过 SDK 更新来修复,但您可以手动修复。
Apple 向他们的编译器添加了一个新的检查,当这些检查永远不会失败时发出警告,但不幸的是,它是基于当前的部署目标这样做的。但是,对于我们这些在具有多个部署目标的项目之间共享代码的人来说,这个新功能确实令人头疼。
我听说您可以通过在编译器标志中添加 -Wno-tautological-pointer-compare 来全局禁用警告,或者通过将“&whatever”括在括号中来一次性禁用警告。