typ*_*ror 38 c struct objective-c default-value
我正在尝试测试是否已经设置了属性.我知道有了我得到的物品:
CGRect ppGoalFrame;
LocalPlaySetup *localPlaySetup;
Run Code Online (Sandbox Code Playgroud)
我可以测试一下
if (localPlaySetup == nil)
Run Code Online (Sandbox Code Playgroud)
但如果我尝试使用== nil或== NULL测试CGRect
if (ppGoalFrame == nil)
Run Code Online (Sandbox Code Playgroud)
我明白了
invalid operands to binary == (have 'CGRect' and 'void *')
Run Code Online (Sandbox Code Playgroud)
那么CGRect"无效",无效,无......?在它设定之前?显然我无法将CGrect与void指针进行比较(我不能使用ppGoalFrame == void); 还有另一种测试方法吗?到目前为止Objective-C很容易理解,但是一旦C出现,我就会有点迷失.
And*_*rew 89
只有指针可以为null.CGRect是一个结构 - 它代表一个连续的内存块.判断是否已将其设置为检查其内容的唯一方法.
Apple确实提供了一个常数CGRectNull.您可以将变量设置为this并使用CGRectIsNull函数来确定它是否已设置. CGRectNull是不一样的CGRectZero,所以如果需要的值为零,你不用担心.
请注意,CGRectNull只包含一个CGRect结构,该结构填充了Apple稍后可以为CGRectIsNull函数标识的值.它与比较指针时的null不同.
gav*_*inb 45
Objective-C类中的所有实例变量都初始化为零.所以所有指针都是nil,数字是0,结构是零.由于CGRect是一个普通的结构,它将被初始化为origin.x=0, origin.y=0, size.width=0, size.height=0.
因此,要测试是否CGRect已设置,您需要将其(按值)与零进行比较.该CGRectIsEmpty函数将完成以下操作:
if (CGRectIsEmpty(ppGoalFrame))
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
小智 5
来自CGGeometry.h:
/* Return true if `rect' is empty (that is, if it has zero width or height),
false otherwise. A null rect is defined to be empty. */
Run Code Online (Sandbox Code Playgroud)
空矩形是没有区域的矩形,其中或两侧为零.
改为使用:
CGRect newRect = CGRectNull;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27282 次 |
| 最近记录: |