2010-12-08 2 views
2

누군가가 밝게 빛나는 문제가 있습니다.iPad 앱이 4.2 배포판에서 충돌합니다.

iPad 스토어에 ipad 용 3.2가 유일하게 일 때 출시 된 ipad 앱이 있습니다. 앱이이 iOS에서 정상적으로 실행되었지만 ipad 에 대해 4.2.1이 나오고 새 사용자 인터페이스에 업데이트 된 사용자 중 일부가 특정 UIBarButtonItem을 누르면 앱이 충돌합니다. 이 각 iOS에서 실행되는 동일한 응용 프로그램을했다, 그래서 아이폰 OS 4.2.1가 나왔을 때에 아이폰 OS 3.2에서 중간에 내가 주최자에 symbolicating과 본 후 아직 내가 4.2

에이 문제를 가지고 더 업데이트를 제출하지 나는 적어도이를 일으키는 코드 줄을 볼 수 있어요 배포 빌드 충돌 보고서 ...

while(i < [filteredData count]) { 

그게 전부를! ... while 루프 동안 단순한 검사. 크래시의 마지막 점 로그는 위의 코드 줄을 가리 킵니다 ....

filteredData는이 시점에 에 할당/초기화 된 NSMutableArray입니다. 이것은 실제로 문제가없는 다른 코드에서 사용됩니다. 는 다시,이 코드 줄은 아이폰 OS 3.2에 아무런 문제가 내 응용 프로그램을 포기하지하지만 iOS에서 내가 디버그와 Xcode를 통해 내 장치에 응용 프로그램을 설치하거나 작동 설정을 놓으면 EXC_BAD_ACCESS (SIGSEGV)

원인 를 4.2.1 완벽하지만 AppStore (배포 빌드)에서 설치할 때 충돌이 발생하고 4.2에서만! 3.2

응용 프로그램에 대한 디버그 및 배포 모드에서 완벽하게 작동

응용 프로그램

그냥 명확하게

는 ..... 4.2

에 분배 모드 4.2하지만 응용 프로그램 충돌에 디버그 모드에서 완벽하게 작동 이견있는 사람? 내가 혼란 스러워요 사촌 ...../당신이

디버그

에 문제를받을 수 그나마 특히

+0

대상 정보 빌드 탭으로 이동하면 배포 및 디버그 구성 간에는 어떤 차이가 있습니까? (모든 필드에 차이가 있는지를 확인하는 방법은 "모든 구성"을 선택한 다음 아래로 스크롤하여 "여러 값"또는 체크 표시에서 대시를 찾습니다.) –

+0

은 예상 경로 차이를 나타냅니다 (debug-iphoneos vs 배포 - 아이폰). "빌드 된 제품 검증"은 디버그가 아닌 배포판에서 검사됩니다. "복사 중 디버그 기호 제거"설정은 배포시에는 검사되지만 디버그에서는 검사되지 않습니다. "최적화 레벨"은 디버그에서 "none", 배포시 "가장 빠름, 최소"입니다. 다른 C 플래그와 C++ 플래그는 모두 디버그에서는 비어 있지만 배포시에는 "-DNS_BLOCK_ASSERTIONS = 1" – freddyD

답변

3

는 아마도 릴리스의 컴파일러에 의해 최적화가 원인이 빌드 시간을내어 감사를 잃었다 리팩토링 ...

NSUInteger count = [filteredData count]; 
while(i < count) { 

또는 루프에서 filteredData mutating?

NSUInteger count = [filteredData count]; 
while(i < count) { 
    blah; 
    blah; 
    count = [filteredData count]; 
} 
+0

예, 리펙토링은 전혀 문제가되지 않습니다. 문제는 도움이되는지 아닌지 어떻게 확인합니까 ?? 언급했듯이 배포판에서만 발생하므로 어떻게 확인할 수 있습니까?당신이 AppStore에서 승인 절차가 가장 빠르지 않다는 것을 알기 때문에 이것을 좁히기 위해 몇 주에서 몇 주가 걸릴 것입니다 .... 그들은 수정없이 업데이트를 계속받을 것이기 때문에 성가신 내 사용자는 말할 것도 없습니다 – freddyD

+0

Nope는 릴리즈로 다시 빌드합니다. 모드가 있지만 dev 인증서를 사용하여 로그인하십시오. 이것 좀 봐. http://stackoverflow.com/questions/4288964/cant-deploy-a-release-version-with-developer-profile 최적화 수준에 대한 책임이 있음을 증명할 것입니다. 목표 설정에서 "최적화 수준"을 "가장 빠름 + 최소"로 변경하고 싶습니다. –

+0

흠 ... 예. 최적화 문제 인 것 같습니다. 레벨을 변경하면 크래시가 표시됩니다. 실제로 크래시가 발생하는 것을 실제로 볼 수 있고 해결할 수 있습니다. 이상한 것은 충돌을 일으키는 코드 라인/라인이 while 루프 내에 있다는 것입니다 ... 루프가 입력되지 않은 경우에도! 적어도 나는 그것을 지금 볼 수있다. .. 감사합니다!! – freddyD