XCode 6.3警告:比较“myObject”的地址不等于空指针总是成立的

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

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

这是我的一段代码,

在这里输入图像说明

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

我的问题是在这里与问题联系在一起。 但是,用讨论的答案是无法解决的。

任何帮助将受到欢迎:)

检查指针的正确方法是

 if (anotherInView != nil) { } 

你正在比较一个variables的地址与NULL 。 每个variables有一个地址,你不能有一个地址为NULL的variables,你可以有一个variables的值为NULL

另外anotherRect != NULL再次无效。 anotherRect将始终有一个值,因为它是一个struct

这里有四个错误。 前两个是你没有为CGRect和UIViewvariables设置任何初始值,所以没有办法检测到失败。 如果你认为这很有用,试着将CGRect设置为一个零宽度,零高度矩形,并将UIView设置为零。

第三和第四个错误是局部variables的地址永远不是NULL。 (请注意,对于库中的全局variables,这是不正确的,正如我在另一条评论中提到的那样,如果符号不存在于您正在运行的操作系统版本中,则NSString指针常量的地址可能为NULL,局部variables,你保证一个地址,直到你的堆栈溢出,你的应用程序崩溃。)

我也为你自己调用委托方法感到困惑。 通常情况下,操作系统本身调用这些方法,所以自己调用它们是非常典型的用法。 为了公平起见,我偶尔做了一个委托方法,在代码中执行需要其他位置的计算,而且在实现调用其他委托的代理时也做了这个计算,但在这个问题的上下文中,这似乎是一个潜在的错误。

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

  if (!CGRectIsNull(anotherRect)) { }