Volevo un modo facile e veloce per ottenere i dati da un URL
senza dover scherzare con delegates
.GCD dispatch_async e NSURLConnection
C'è qualcosa di sbagliato in quanto segue?
// Use gcd
dispatch_queue_t queue = dispatch_queue_create("com.dowork", 0);
dispatch_queue_t main = dispatch_get_main_queue();
// do the long running work in bg async queue
// within that, call to update UI on main thread.
dispatch_async(queue, ^{
// Do work in the background
NSData *response = [NSURLConnection sendSynchronousRequest:serviceRequest returningResponse:&serviceResponse error:&serviceError];
dispatch_async(main, ^{
// Update UI
self.data = response;
[self.tableView reloadData];
});//end
});//end
ho pensato Ho letto da qualche tempo fa che utilizzando il metodo sincrono NSURLConnection
in un thread in background potrebbe causare perdite di memoria. È vero?
Ci sono problemi con i codici che vengono pubblicati lì? Qualche problema con l'assegnazione dei dati a self.data
all'interno del blocco?
mi rendo conto che, e hanno testato alcune implementazioni con esso. Ma è ancora limitato per quello che devo fare. Il metodo che mostro sopra è così bello e facile da ottenere il 'NSData', tutti gli altri metodi asincroni sembrano essere un processo in 2 passaggi con i delegati. Quindi, continuando a chiedermi della mia domanda originale. –
@Nic: aggiornato la mia risposta – JeremyP
Grazie, quindi pensi che sia sicuro farlo in questo modo, purché aggiungo il mio pool di autorelease? –