11

我在一个类中有一个CGPoint声明,在我尝试检查它是否不等于,但我收到此错误:UIViewviewControllerCGPointCGPointZeroInvalid operands to binary expression ('CGPoint' (aka 'struct CGPoint') and 'CGPoint')

这是 if 语句:

if (joystick.velocity != CGPointZero)

错误指向 != 我不知道为什么它会给我一个错误。

joystickUIView类,CGPoint velocity声明如下:

@property(nonatomic) CGPoint velocity;

4

1 回答 1

17

尝试这个:

if (!CGPointEqualToPoint(joystick.velocity, CGPointZero))

说明: CGPoint 实际上是一个结构。二元操作数(“==”或“!=”)仅用于比较原始值,通常用于比较指针,实际上是表示内存位置的整数。

由于您有一个结构,而不是对某物的引用,因此您必须比较结构中的每个值,但幸运的是,苹果已经实现了一个宏,在 CGPoint 的情况下为您执行此操作。

如果你好奇,可以命令单击上面的宏并查看实现:

__CGPointEqualToPoint(CGPoint point1, CGPoint point2)
{
  return point1.x == point2.x && point1.y == point2.y;
}
于 2013-08-01T17:48:24.693 回答