更新到XCode 6.3后,编译器开始发出此警告。
Comparison of address of 'myObject' not equal to null pointer is always true.
这是我的一段代码,
用它抓我的头,但没有找到任何解决方案或解决方法来摆脱这个警告。
我的问题与here的问题有关。但是,它无法通过讨论的答案来解决。
欢迎任何帮助:)
答案 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)) {
}