Ho una vista con una logica di disegno molto complessa (è una vista mappa che richiama i dati GIS). Facendo questo disegno sul thread principale si blocca l'interfaccia utente e l'app non risponde. Voglio spostare il disegno su un thread in background con ad esempio una NSOperation.Disegno in un thread in background su iOS
Qual è il modo migliore per strutturare questo?
Attualmente sto disegnando su una memoria CGContext e poi lo converto in un CGImageRef che mando alla vista per blit sul thread principale. Sfortunatamente questo consuma molta memoria e sembra che l'accelerazione della GPU non sia più utilizzata poiché è un po 'più lenta. C'è un modo per disegnare direttamente alla vista da un thread in background? So che UIKit non è sicuro multi-thread ma forse c'è un modo per bloccare la vista mentre sto facendo il disegno?
Intendi CALayer? –
No. CGLayer. http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGLayer/Reference/reference.html – MacGeek
Quindi sto provando questo approccio ora, ma anche se corro con un NSTimer ed eseguo solo il 50% del tempo (eseguito su intervalli di 0,2 secondi per un massimo di 0,1 secondi per ciclo di disegno) sembra che stia ancora ignorando tutti gli eventi dell'interfaccia utente. C'è un trucco per questo? –