2013-08-01 8 views
10

Ho un CGPoint dichiarato in una classe UIView, nel mio viewController cerco di controllare se che CGPoint non è uguale a CGPointZero, ma ottengo questo errore: Invalid operands to binary expression ('CGPoint' (aka 'struct CGPoint') and 'CGPoint')controllo Cant se CGPoint non è uguale CGPointZero

Questo è la frase if:

L'errore punta a! = e non so perché mi dà un errore.

joystick è il UIView di classe, CGPoint velocity viene dichiarata in questo modo:

@property(nonatomic) CGPoint velocity;

risposta

16

Prova questa:

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

Spiegazione: Un CGPoint è in realtà una struct. L'operando binario ("==" o "! =") È usato solo per confrontare i valori primitivi, di solito utili per confrontare i puntatori, che in realtà sono numeri interi che rappresentano una posizione di memoria.

Come hai una struttura e non un riferimento a qualcosa, dovresti confrontare ogni valore all'interno della tua struttura, ma per fortuna Apple ha già implementato una macro che esegue questo per te nel caso di CGPoint.

Se siete curiosi, è possibile comandare clic la macro sopra e vedere l'attuazione:

__CGPointEqualToPoint(CGPoint point1, CGPoint point2) 
{ 
    return point1.x == point2.x && point1.y == point2.y; 
} 
+0

mi hai battuto a questa risposta :) –

+0

andando provare questo ora era qualcosa di simile a questo ho pensato che sarebbe essere, come il metodo isEqualToString. – Arbitur

Problemi correlati