Vorrei inizialmente impostare una proprietà CGPoint su un punto particolare (al centro dello schermo). Altri metodi potrebbero successivamente desiderare di cambiare questa proprietà. I miei pensieri erano di inizializzarlo se vuoto nel getter, ma ottengo il messaggio tipo argomento non valido 'struct CGPoint' all'espressione unaria. Ho anche provato ad usare if property == nil o 0 ma nessuna gioia.Come posso verificare se un CGPoint è stato inizializzato?
Qualche 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;
}
Mi piace molto questa risposta, perché ** {0.0, 0.0} ** è una coordinata realmente esistente e valida. Usarlo come punto nullo potrebbe infrangere la logica del tuo programma. – Stas
Impostando il CGPoint su -1, -1 mi sembra meno logico degli altri suggerimenti. L'aggiunta di una variabile booleana separata sembra una violazione di un singolo punto di verità - fornirà un risultato errato se non viene aggiornato ogni volta che lo stato della variabile viene modificato. – arlomedia
Programmazione probabilmente orribile, ma se sei disperato potresti sempre passare {NAN, NAN} come coordinate al tuo CGPoint. – Tommyixi