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

时间:2015-04-10 11:14:19

标签: ios objective-c xcode warnings

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

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

这是我的一段代码,

enter image description here

用它抓我的头,但没有找到任何解决方案或解决方法来摆脱这个警告。

我的问题与here的问题有关。但是,它无法通过讨论的答案来解决。

欢迎任何帮助:)

3 个答案:

答案 0 :(得分:9)

检查指针的正确方法是

if (anotherInView != nil) {
}

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

anotherRect != NULL也无效。 anotherRect将始终具有值,因为它是struct

答案 1 :(得分:1)

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

第三个和第四个错误是局部变量的地址永远不是NULL。 (请注意,对于库中的全局变量,情况并非如此,正如我在另一条注释中提到的 - 如果符号不存在于您的操作系统版本中,则NSString指针常量的地址可能为NULL运行 - 但对于局部变量,您可以确保地址达到堆栈溢出且应用程序崩溃的程度。)

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

答案 2 :(得分:0)

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

 if (!CGRectIsNull(anotherRect)) {

 }