カスタム NSURLCache を使用して、特定の Web ページの呼び出しを傍受し、それらを動的に変更しています。内部 cachedResponseForRequest: リクエストを変更し、sendSynchronousRequest を使用して送信します。これは、フォームを送信しようとするまでは非常にうまく機能します。投稿データがある場合は失敗します。
HTTPBody を削除してリクエストを GET に設定すると、成功します。しかし、私はそれが POST で動作する必要があります。リクエストを非同期に送信すると、それも機能するため、同期リクエストが失敗する理由がわかりません。
ここに私のスタックトレースがあります:
日付/時刻: 2010-01-17 12:37:55.416 -0800
OS バージョン: iPhone OS 3.1.2 (7D11)
レポート バージョン: 104
例外の種類: EXC_BAD_ACCESS (SIGBUS)
例外コード: KERN_PROTECTION_FAILURE at 0x0000001cクラッシュした
スレッド: 2
Thread 2 Crashed:
0 CFNetwork 0x0000b4e4 HTTPMessage::copyHeaderFieldValue(__CFString const*) + 18
1 CFNetwork 0x0000b4c8 CFHTTPMessageCopyHeaderFieldValue + 16
2 CFNetwork 0x0000e022 HTTPProtocol::createStream() + 328
3 CFNetwork 0x0000de8a HTTPProtocol::createAndOpenStream() + 458
4 CFNetwork 0x0000cba2 HTTPProtocol ::startLoad() + 278
5 CFNetwork 0x0000c8da URLConnectionLoader::loaderScheduleOriginLoad(_CFURLRequest const*) + 216
6 CFNetwork 0x0000c77c URLConnectionLoader::loaderScheduleLoad(_CFURLRequest const*) + 280
7 CFNetwork 0x0000c5e6 URLConnectionLoader::LoaderConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo , long) + 134
8 CFNetwork 0x0000c53a URLConnectionLoader::processEvents() + 60
9 CFNetwork 0x0000a892 URLConnection::multiplexerClientPerform(RunLoopMultiplexer ) +
Source30 10 CFNetwork0x01 86
11 CFNetwork 0x0000a7b2 MultiplexerSource::_perform(void*) + 2
12 CoreFoundation 0x000573a0 CFRunLoopRunSpecific + 1908
13 CoreFoundation 0x00056c18 CFRunLoopRunInMode + 44
14 Foundation 0x0005a998 +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:] + 172
15 Foundation 0x00053ac6 -[NSThread main] + 42
16 Foundation 0x00001d0e __NSThread__main__ + 852
17 libSystem.B.dylib 0x0002b7b0 _pthread_body + 20
ご覧のとおり、copyHeaderFieldValue がクラッシュを引き起こしています。私が理解していないのは、その理由です。