2011-06-24 181 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本身也是不等的!) –