sto vedendo un incidente che avviene 10 o 20 secondi dopo una richiesta POST faccio è terminata (didReceiveResponse
, didReceiveData
e connectionDidFinishLoading
tutto il fuoco ben prima del crollo accade).iPhone SDK: inviare messaggi NSData con risultati NSMutableURLRequest in incidente misterioso
Questo è il codice che sto usando per fare la richiesta:
NSURL* url = [[NSURL alloc] initWithString:urlString];
[urlString release];
NSData* requestData = [jsonData dataUsingEncoding:NSUTF8StringEncoding];
NSString* requestDataLengthString = [[NSString alloc] initWithFormat:@"%d", [requestData length]];
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:requestData];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:requestDataLengthString forHTTPHeaderField:@"Content-Length"];
[request setTimeoutInterval:30.0];
[url release];
[requestData release];
[requestDataLengthString release];
m_URLConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[request release];
Cosa c'è di molto strano in questo incidente è questo: se io non chiamo setHTTPBody con il mio NSData
oggetto, setValue:@"application/json"
per Content-Type
e setValue:requestDataLengthString
per Content-Length
, si verifica l'arresto non. Sono completamente perplesso su ciò che sta accadendo. Per quanto posso dire, l'arresto anomalo è direttamente correlato all'invio di un oggetto NSData
con la mia richiesta. Quando lo fa crash, gli elementi superiori nella stack di chiamate per l'incidente (EXEC_BAD_ACCESS
) sono i seguenti:
objc_msgSend
CFRelease
HTTPMessage::~HTTPMessage
_CFRelease
HTTPWriteFilter::~HTTPWriteFilter
Qualcuno può pensare a qualcosa che potrei stai sbagliando? Sono completamente a corto di ciò che sto facendo male, come risolverlo o come aggirarlo. C'è un modo migliore per i dati POST di quello che sto facendo?
Solo per provare qualcosa: si blocca ancora se si rimuove la riga [requestData release]? – squelart