2014-01-20 3 views
0

iOS 앱에서 강렬한 데이터 처리를 수행하고 있는데 "취소"UIButton이 있습니다. 사용자는 취소 버튼을 누를 수 있지만 처리가 너무 늦기 때문에 클릭이 약 10 초간 인식되지 않습니다. 그러나 내 장치에서 홈 버튼을 클릭하면 전화기가 즉시 홈 화면으로 이동합니다.강렬한 데이터 처리로 인해 UI 상호 작용이 수행되지 않습니다.

가정용 버튼이 Apple에 의해 최상위 우선 순위로 프로그래밍되었다고 가정합니다. 앱에서 취소 버튼을 "최우선 순위"로 유지할 수있는 방법이 있습니까? 느린 애니메이션 및 화면 UI 업데이트 및 지연 데이터 처리를 위주로합니까? 나는 이것이 GCD - Dispatch levels과 관련이 있다고 가정하고있다.

+1

데이터 처리 작업에 낮은 우선 순위 ('DISPATCH_QUEUE_PRIORITY_BACKGROUND')를 줄 수 있습니다. –

+0

백그라운드 프로세스를 시작하는 코드와 취소 할 코드를 게시하십시오. UI의 우선 순위를 올릴 수 없습니다 (기본 스레드에서 항상 실행됩니다). –

+1

이미 GCD (또는 비슷한)를 사용하여 처리를 백그라운드에서 진행하고 있습니까? 그렇지 않다면 그렇게하십시오. –

답변

1

메인 대기열은 모든 기본 UI 상호 작용과 애니메이션에 사용됩니다. 주 스레드에서 데이터 처리를하는 것처럼 들립니다. 이것은 원하는 경로가 아닐 수도 있지만, 데이터 처리 작업을 GCD가있는 별도의 스레드로 옮기는 것을 고려해보십시오. UIButton의 우선 순위를 높이는 것과는 다릅니다.