2015-01-12 5 views
1

코코아를 사용하면 백그라운드 스레드에서 비동기 적으로 실행되도록 작업 (코드 블록)을 예약 할 수 있습니까?백그라운드 스레드에서 작업을 예약하는 방법 [코코아]

작업이 오랫동안 차단 될 수 있으므로 작업이 주 스레드에서 실행되지 않는 것이 중요합니다.

물론 내 자신의 스레드 (NSThread)를 만들 수 있지만, 나에게 Cocoa가 더 쉽고/더 나은 방법을 제공해야한다고 생각합니다.

+0

이렇게하는 데는 약 5 가지 방법이 있습니다. –

+0

@HotLicks 좋습니다. 그들에 대해 알려주세요. –

답변

1

dispatch_async() Grand Central Dispatch 명령을 사용하면 백그라운드에서 코드를 쉽게 실행할 수 있습니다. 예 :

dispatch_queue_t bgQueue = dispatch_queue_create("bgQueue", NULL); 
dispatch_async(bgQueue, ^{ 
    //your code here 
}); 
+0

제가 볼 수있는 한, 문서에서는 백그라운드 스레드, 즉 주 스레드가 아닌 스레드에서 블록을 실행할 것이라고 설명하지 않습니다. 내가 놓친 게 있니? –

+0

첫 번째 매개 변수로 설정 한 큐에 전달됩니다. 'dispatch_get_main_queue()'를 사용하여 생성하지 않은 큐는 메인 큐가 아닙니다. 따라서 차단은 백그라운드에서 실행됩니다 (예 : 메인 대기열에 있지 않음). –

+0

@jshier 메인 큐가 메인 큐가 아닌 이상 주 스레드가 GCD 큐에 제출 된 것을 실행하지 않는다고 말하는가? 여기서 중요한 것은 큐를 실행하는 큐가 아니라 스레드를 실행하는 큐입니다. –

관련 문제