2011-08-04 3 views
0

[[ASIHTTPRequest alloc] initWithURL : url]을 호출하자마자 애플리케이션이 다운됩니다. 내 아이팟 터치 1G에. iOS 4.x에는 문제가 없습니다.ASIHTTPRequest가 iOS 3.1.3에서 충돌 함

내가 볼 수있는 오류는 오류 도메인 = ASIHTTPRequestErrorDomain 코드 = 10 사용자 정보 = 0x368790 "NSRangeException"

와 내가 구현 한 충돌 관리자 시스템에서 얻을 역 추적이

backtrace: (
"0 MayasDUp       0x0007f21b -[SWCrashManager backtrace] + 18", 
"1 MayasDUp       0x0007ece1 sighandler + 144", 
"2 libSystem.B.dylib     0x3049e7eb _sigtramp + 26", 
"3 MayasDUp       0x0005128b -[ASIHTTPRequest buildPostBody] + 850" 

입니다)

입니다

게시 변수 설정 및 연결 시작과 같은 작업을 수행하지 않고도 [[ASIHTTPRequest alloc] initWithURL : url] 호출만으로 배치했습니다. 여전히 충돌이 발생합니다.

나는 ASIHTTPRequest 내에 중단 점을 기록하고 NSLog를 기록했지만 아무런 도움이되지 않았습니다.

비슷한 문제가 있습니까?

+0

는 디버거를 통해 실행하고에 충돌 것 buildPostBody에있는 라인 정확히 우리를 게재 할 수 있습니까? – JosephH

+0

buildPostBody 메서드가 완전히 실행됩니다. 메소드 끝 부분에 NSLog 호출과 중단 점을 두었고 실행은 그 지점에 정상적으로 도달합니다. 스레드 3에서 응용 프로그램이 작동을 멈추고 추가 정보가 필요하면 0 노드 만 표시됩니다. 충돌이 약간 지연된 후에 발생하며 제대로 표시 할 수없는 것 같습니다. – Dimitrios

+0

NSZombies를 사용하도록 설정 했습니까? – JosephH

답변

0

아마도 10 초 이상 걸리는 메인 스레드에서 뭔가를 실행하고있을 것입니다. 동기 http 요청을 하시겠습니까? 기본 스레드에 있다면

[request startAsynchronous]; 

을 사용해야합니다.

+0

startAsynchronous를 사용하고 있습니다. – Dimitrios

+0

그때까지는 오랜 시간이 걸리는 뭔가가 있습니다. 계측기를 실행하면서 시간이 어디인지 확인하거나 시간 초과가되기 전에 디버거에서 일시 중지하거나 로깅을 사용하거나 더 많은 코드를 게시하십시오. – JosephH

1

많은 파기 끝에 문제가 매우 깊어서 실제로 컴파일러 버그였습니다. 간단히 말해 LLVM 2.0을 사용하고 프로젝트에 대해 최적화 수준> 없음을 설정하면 충돌을 일으키고 스택 추적에 실제 데이터가 제공되지 않는 손상된 컴파일 된 파일 (ASIHTTPRequest 및 ASIFormDataRequest)이 발생했습니다.

우리가 적용한 솔루션은 컴파일러 및 최적화 설정을 그대로두고 문제가있는 2 개의 ASIHttp 파일에 -O0 컴파일러 플래그를 추가하는 것이 었습니다.

다른 사용자는 XCode 4.0.2가 컴파일러 문제를 해결했다고보고했습니다.

에 관심있는 사람들을위한 몇 가지 세부 사항은 여기있다 : 당신은 http://groups.google.com/group/asihttprequest/browse_thread/thread/c598649bfe71643c/8ee09defd12386ba?lnk=gst&q=crashes#8ee09defd12386ba