db 동기화 메커니즘이있는 앱에서 작업 중입니다.백 그라운드 처리를 위해 GCD 사용
[NSThread detachNewThreadSelector:@selector(sync)
toTarget:[SyncService sharedInstance]
withObject:nil];
을 다음 그러나 여기에서 문제는, 동기화가 백그라운드에서 실행되지대로
나는 동기화 서비스를 호출했다. 결과 응용 프로그램
동기화가 완료 될 때까지 유휴 상태가됩니다. 그래서, 배경
처리를 GCD를 사용하여 생각하고 다음
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[[SyncService sharedInstance]Sync];
});
를했지만 지금도 동기는 background.I에 동기화가
백그라운드에서 수행 할 수행되지 않습니다 .
편집 : 내가 사용 해달라고 할 때마다
[NSThread detachNewThreadSelector : @selector (동기화)
toTarget:[SyncService sharedInstance] withObject:nil];,
바로 다음 줄 [[[SyncService sharedInstance] 위임] addObject : 자기] 아니요
이라고합니다. 이것은 GCD (전역 큐)를 사용할 때 호출되지 않습니다.
도움을 주시면 대단히 감사하겠습니다.
아니, 난 여전히 동기화의 주 스레드를 호출하고 있지 않다 메인 스레드에서 수행되지 않습니다 있는지 확인해야한다고 말했습니다 rckoenes으로
: – Raj
@rckoenes'dispatch_get_global_queue()'는 모든 대기열 우선 순위 유형에 대한 백그라운드 대기열을 반환합니다. 문서를 확인하십시오. 백그라운드 우선 순위는 단순히 가장 낮은 우선 순위를 가짐을 의미합니다. 그의 싱글 톤에서 뭔가가 일어나고 있습니다, 나는 용의자가 될 것입니다. –
그러면 UI를 차단하는'Sync'라는 메소드가 아닙니다. – rckoenes