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)) { }