2011-06-24 177 views
2

我无法检查NSRect结构是否有值。检查NSRect是否为空

if(!myRect)// produce an error 
if(myRect== nil) //this's not a pointer...can't works. 

这是正确的方法吗?

回答

12

我觉得NSIsEmptyRect功能比较舒服吧?
如果你只是想检查零矩形。

10

NSRect是一个结构体,而不是指针,因此它不能是nilNULL。但是,您可以检查一个矩形是否等于NSZeroRectif(NSEqualRects(myRect, NSZeroRect))

+0

使用NSZeroRect我检查myRect是否等于'{{0.0,0.0},{0.0,0.0}}'我需要检查一个结构是否被初始化,而不是等于零的值。 – MatterGoal

+1

与RDBMS不同,内存没有固有的“无效”值。 NULL只是0,当它是一个指针的值时,它有特殊的意义;但对于整数(0只是另一个整数)或结构体没有这样的事情,除非你自己选择一个。 NSZeroRect将是一个明智的选择。 – LaC

+3

由于矩形的组件是浮点数,所以可以使用NaN作为其组件,并编写一个函数,在每个矩形的成员上测试'isnan'。 (测试平等不会起作用:NaN不仅对每个数字都是不等的,而且对NaN本身也是不等的!) –