Domanda

Objective-C - come potrei essere in grado di creare un obiettivo-c coroutine? Quando ho un IBAction chiamato da un pulsante che blocca l'applicazione fino a quando l'IBAction termina dati retreiving (da un sito web). Come potrei avere questa corsa come un coroutine per l'applicazione principale?

Grazie, Christian Stewart

È stato utile?

Soluzione

Un coroutine è una tecnica specifica implementazione. Che cosa si vuole fare è fare il lavoro in background senza bloccare l'interfaccia utente.

Ci sono due tecniche principali per fare questo su iOS e Mac OS X:. Loop Run e fili

Se sono solo scaricando alcuni dati tramite un URL HTTP, è possibile avviare il download e dirgli di notifica quando fatto o quando ha alcuni dati per voi. L'URL di download sarà gestire la propria concorrenza con il ciclo di esecuzione corrente, e l'applicazione sarà in grado di interagire con l'utente.

Se è necessario eseguire la propria elaborazione, è possibile spin-off di un thread in background per farlo utilizzando NSOperationQueue e NSOperatipn, utilizzando GCD (dispatch_ *), o utilizzando direttamente NSThread. Se si esegue questa operazione è necessario comprendere programmazione concorrente, proteggendo stato condiviso utilizzando mutexes (serrature) e altri meccanismi di sincronizzazione, e così via.

Per un URL di download, utilizzare proprio supporto concorrenza di NSURLDownload. Per ulteriori lavoro di elaborazione pesante, dare NSOperation una prova.

Altri suggerimenti

Date un'occhiata a URL Caricamento sistema di programmazione Guida .

Si sono probabilmente interessati nel NSURLConnection , si imposta l'URL e fornire ai delegati. I suoi delegati vengono chiamati con i dati e quando la connessione / download è terminato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top