POST要求が完了してから10秒または20秒後にクラッシュが発生しました(クラッシュが発生する前にdidReceiveResponse
、didReceiveData
およびconnectionDidFinishLoading
がすべて発砲しています)。iPhone SDK:NSMutableURLRequestを使用してNSDataをPOSTすると、不思議なクラッシュが発生する
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];
このクラッシュは非常に奇妙です:がNSData
オブジェクトで setHTTPBodyを呼び出さない場合、Content-Type
Content-Length
のsetValue:requestDataLengthString
では、がクラッシュしてもは発生しません。私は何が起こっているかについて完全に困惑しています。私が知る限り、クラッシュは私の要求と共にNSData
オブジェクトを送信することに直接関連しています。クラッシュすると、クラッシュ(EXEC_BAD_ACCESS
)の呼び出しスタックの先頭の要素は次のようになります。
objc_msgSend
CFRelease
HTTPMessage::~HTTPMessage
_CFRelease
HTTPWriteFilter::~HTTPWriteFilter
objc_msgSend
誰かが私が間違っているかもしれない何かを考えることができますか?私は何が間違っているのか、それをどうやって解決するのか、それを回避する方法については全く失われています。私がやっているやり方よりもデータをPOSTする良い方法はありますか?
試してみてください:[requestData release]行を削除するとクラッシュしますか? – squelart