Me gustaría establecer inicialmente una propiedad CGPoint en un punto particular (centro de la pantalla). Otros métodos pueden subsecuentemente desear cambiar esta propiedad. Mis pensamientos fueron inicializarlo si está vacío en el getter, pero obtengo el mensaje de argumento inválido tipo 'struct CGPoint' en expresión unaria. También intenté usar if property == nil o 0 pero no joy.¿Cómo verifico si un CGPoint se ha inicializado?
¿Alguna idea?
-(CGPoint)graphOrigin
{
// initialise to centre of screen if has not been set
if(!_graphOrigin) // this expression is causing the problem
{
CGPoint origin = CGPointMake(self.bounds.origin.x + self.bounds.size.width/2, self.bounds.origin.y + self.bounds.size.height/2);
_graphOrigin = origin;
}
return _graphOrigin;
}
Me gusta esta respuesta mucho más, porque ** {0.0, 0.0} ** es una coordenada realmente existente y válida. Usar eso como un punto nulo puede romper la lógica de tu programa. – Stas
Configurar el CGPoint en -1, -1 me parece menos hackoso que las otras sugerencias. Agregar una variable booleana separada parece ser una violación de Punto único de la verdad: dará un resultado incorrecto si no se actualiza cada vez que se cambia el estado de la variable. – arlomedia
Programación probablemente horrible, pero si estás desesperado, siempre puedes pasar {NAN, NAN} como coordenadas a tu CGPoint. – Tommyixi