XCode 6.3 警告:'myObject' 不等于空指针的地址比较始终为真

XCode 6.3 Warning : Comparison of address of 'myObject' not equal to null pointer is always true

更新到 XCode 6.3 后,编译器开始发出此警告。

Comparison of address of 'myObject' not equal to null pointer is always true.

这是我的一段代码,

我摸不着头脑,但没有找到任何解决方案或变通方法来消除此警告。

我的问题与 上的问题有关。但是,使用讨论的答案无法解决。

欢迎任何帮助:)

检查指针的正确方法是

if (anotherInView != nil) {
}

您正在将一个变量的地址与 NULL 进行比较。每个变量都有一个地址你不能有一个地址为NULL的变量,你可以有一个值为NULL

的变量

此外 anotherRect != NULL 再次无效。 anotherRect 总是有一个值,因为它是 struct

这里有四个错误。前两个是您没有为 CGRect 和 UIView 变量设置任何初始值,因此无法检测到故障。如果您认为有用,请尝试将 CGRect 设置为零宽度、零高度的矩形,然后将 UIView 设置为 nil。

第三个和第四个错误是局部变量的地址永远不会为NULL。 (请注意,这对于库中的全局变量而言并非如此,正如我在另一条评论中提到的那样——如果符号在 OS 版本中不存在,则 NSString 指针常量的地址可能为 NULL 运行—但对于局部变量,您可以保证在堆栈溢出和应用程序崩溃之前的地址。)

我也很困惑你为什么要自己调用委托方法。通常,OS 本身会调用这些方法,因此自己调用它们有点不典型。公平地说,我有时会在委托方法执行代码中其他地方需要的计算时这样做,而且在实现调用其他委托的委托时我也会这样做,但在这个问题的上下文中,这似乎是一个潜在的错误。

对于第一条指令,a 更改为:

 if (!CGRectIsNull(anotherRect)) {

 }