无法检查CGPoint是否与CGPointZero不相同

Arb*_*tur 10 if-statement cgpoint ios

CGPoint在一个UIView类中声明了,在我viewController尝试检查是否CGPoint不相等CGPointZero,但是我得到了这个错误:Invalid operands to binary expression ('CGPoint' (aka 'struct CGPoint') and 'CGPoint')

这是if语句:

if (joystick.velocity != CGPointZero)
Run Code Online (Sandbox Code Playgroud)

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

joystickUIView类,CGPoint velocity声明如下:

@property(nonatomic) CGPoint velocity;

Luc*_*rdo 16

试试这个:

if (!CGPointEqualToPoint(joystick.velocity, CGPointZero))
Run Code Online (Sandbox Code Playgroud)

说明:CGPoint实际上是一个结构.二进制操作数("=="或"!=")它仅用于比较原始值,通常用于比较指针,实际上它们是表示存储器位置的整数.

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

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

__CGPointEqualToPoint(CGPoint point1, CGPoint point2)
{
  return point1.x == point2.x && point1.y == point2.y;
}
Run Code Online (Sandbox Code Playgroud)