Sto scrivendo un'applicazione che utilizza il dito per disegnare semplici diagrammi. Lo faccio funzionare per la maggior parte, ma ora sto cercando di ottimizzare le sue prestazioni. Quando l'utente fa scorrere rapidamente il dito, non riesco a catturare eventi di tocco sufficienti per tracciare un percorso scorrevole.Ottimizzazione dell'applicazione di disegno (con un tocco delle dita) per iPhone SDK
Ecco il mio approccio attuale:
1) I sottoclasse un UIView e ha aggiunto un poroperty ad un CGLayer (viene creato pigramente ed è la stessa dimensione come la mia UIView). 2) La sottoclasse UIView risponde agli eventi di tocco memorizzando gli ultimi e attuali punti di contatto nelle variabili di istanza. 3) La mia vista setNeedsDisplay viene richiamata e in draw rect, effettuare le seguenti operazioni: - tracciare una linea dalla posizione di tocco precedente alla posizione corrente su CGLayer - trascina l'intero CGLayer nel contesto delle viste in una volta
Il problema principale è quando un utente scorre rapidamente. Ottengo relativamente pochi eventi di tocco, quindi le linee che disegna tra i tocchi sono lunghe e rendono il tracciato frastagliato non liscio.
Le mie domande:
1) Se drawRect (sul mio UIView sottoclasse) e il mio tocco gestori di eventi sul mio UIView sottoclasse vengono chiamati nello stesso thread? Cioè potrei avere thread in esecuzione (uno in un evento touch e il secondo nel mio draw rect)?
Se nessun evento tocco viene accodato mentre viene chiamato drawRect? E come posso migliorare le prestazioni - semplicemente migliorare le prestazioni di drawRect?
Se sì, come posso ottenere più eventi di tocco affinché possa disegnare un percorso più agevole?
Grazie.
Quindi sia il mio drawRect ei miei gestori di eventi di tocco ottenere chiamato sul thread principale? Stai suggerendo che ogni volta che si verifica un evento tattile dovrei iniziare una nuova discussione e fare il mio disegno in quel thread? – aloo
Sto proponendo di avere ** un thread di lavoro **. Inizia a disegnare ogni volta che è finito con quello vecchio e almeno un nuovo tocco è disponibile. –