2013-01-07 3 views
0

정적 라이브러리를 개발 중입니다. 그리고 나는 here의 소스 코드를 사용하여 라이브러리에서 역 인증을 사용하고 있습니다. 이 라이브러리에서는 iOS5에서 다음과 같은 오류가 발생하지만 iOS6에서는 정상적으로 작동합니다.iOS5에서 GCD 오류가 발생합니다.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 

다음과 같이 행을 변경하면 모든 OS 버전에서 정상적으로 작동합니다.

dispatch_async(dispatch_get_main_queue() 

변경 사항은 모든 상황에서 작동합니까? 아니면 문제가 발생합니까? 조언 해주세요. 고마워요.

+0

어떤 오류가 발생합니까? 충돌 로그? – mprivat

+0

@mprivat 답장을 보내 주셔서 감사합니다. 그것은 iOS 5 시뮬레이터에서 "objc_msgSend"를 던졌습니다. iOS 5 장치가 없지만 iOS 6 장치에서 정상적으로 작동합니다. –

+1

나는 똑같은 문제가 있었지만, 바보 같았다. 나는 6.0으로 내 애플 리케이션의 배포 대상을 설정했다. 5.0으로 다시 변경하면 동일한 "dispatch_async"코드 줄을 유지할 수 있었고 두 OS에서 모두 작업 할 수있었습니다. –

답변

2

코드를 볼 수 없다는 것을 말하기는 어렵지만 블록 앞에서 생성 된 개체에 GCD 블록이 없으면 메시지를 보내고 블록이 실행될 때 더 이상 살아 있지 않은 것처럼 들립니다. ARC가 수집하지 않도록 속성을 유지하는 것이 좋습니다.

iOS 버전 간의 불일치는 시뮬레이터와 기기의 차이로 인해 발생할 수 있습니다 (기기에서 iOS 6 버전을 실행하고 시뮬레이터에서 5 번을 실행한다고 말했음).

+0

고맙습니다. @mprivat, 나는 소스 코드를 게시 할 예정입니다. –

관련 문제