Utilizzando la nuova API TWRequest
di iOS 5, ho eseguito un muro di mattoni relativo all'utilizzo del blocco.Utilizzo di blocchi all'interno di blocchi in Objective-C: EXC_BAD_ACCESS
Quello che devo fare è ricevere una risposta positiva a una prima richiesta, licenzarne immediatamente un'altra. Nel blocco di completamento della seconda richiesta, quindi, notifica l'esito positivo o negativo dell'operazione a più passaggi.
Ecco più o meno quello che sto facendo:
- (void)doRequests
{
TWRequest* firstRequest = [self createFirstRequest];
[firstRequest performRequestWithHandler:^(NSData* responseData,
NSHTTPURLResponse* response,
NSError* error) {
// Error handling hidden for the sake of brevity...
TWRequest* secondRequest = [self createSecondRequest];
[secondRequest performRequestWithHandler:^(NSData* a,
NSHTTPURLResponse* b,
NSError* c) {
// Notify of success or failure - never reaches this far
}];
}];
}
io non sto conservando una delle richieste o mantenere un riferimento ad essi ovunque; è solo fuoco e dimentichi.
Tuttavia, quando si esegue l'applicazione, si blocca con EXC_BAD_ACCESS
on:
[secondRequest performRequestWithHandler:...];
Esegue la prima richiesta bene, ma quando provo a lanciare un secondo con un gestore, si blocca. Cosa c'è di sbagliato in quel codice?
I metodi per creare le richieste sono così semplici come:
- (TWRequest*)createFirstRequest
{
NSString* target = @"https://api.twitter.com/1/statuses/home_timeline.json";
NSURL* url = [NSURL URLWithString:target];
TWRequest* request = [[TWRequest alloc]
initWithURL:url parameters:params
requestMethod:TWRequestMethodGET];
// _twitterAccount is the backing ivar for property 'twitterAccount',
// a strong & nonatomic property of type ACAccount*
request.account = _twitterAccount;
return request;
}
per favore pubblica il codice di 'createFirstRequest' e' createSecondRequest' – vikingosegundo
Puoi pubblicare il codice per '-createSecondRequest'? Sto indovinando c'è un problema con questo codice viene eseguito su un thread in background poiché non c'è mai una garanzia su quale thread verrà eseguito un gestore di completamento. –
Fatto; scusa, non pensavo sarebbe stato rilevante. – biasedbit