2016-08-03 9 views
0

CoreData를 사용하고 있으며 비동기 페치 요청을하려고합니다. 그런 식으로뿐만 아니라 작동하는 경우 나, 내가 왜 그 경우"performBlock"메서드는 언제 사용해야합니까?

[managedObjectcontext performBlock:^{ 
    [managedObjectcontext executeRequest:asyncFetch error:&err]; 
}]; 

에서 "performBlock"방법을 사용해야하시기 바랍니다 것을 설명한다?

[managedObjectcontext executeRequest:asyncFetch error:&err]; 

"performBlock"에서 첫 번째 이점을 사용하면 어떤 이점이 있습니까?

+0

코어 데이터 스레드 디버깅을 켜십시오. – Wain

답변

2

performBlock : 및 performBlockAndWait : NSPrivateQueueConcurrencyType 또는 NSMainQueueConcurrencyType을 사용하여 MOC를 초기화했는지 여부에 관계없이 NSManagedObjectContext에 메시지를 보내는 데 사용됩니다. 이러한 컨텍스트 유형 중 하나를 사용하여 작업을 수행하면 블록으로 처리합니다.

performBlock : 블록을 백업 대기열에 추가하고 자체 스레드에서 실행되도록 예약합니다. 이 블록이 즉시 반환 될 것이므로 long persist 작업에 이것을 사용할 수 있습니다.

performBlockAndWait : 블록을 백업 대기열에 추가하고 자체 스레드에서 실행되도록 예약합니다. 그러나 블록은 블록 실행이 완료 될 때까지 리턴되지 않으므로 블록 호출입니다.

+0

자세한 내용을 알 필요가 있으므로 참고 자료 나 링크를 인용 해주십시오. –

+2

사과 문서 https://developer.apple.com/library/ios/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObjectContext_Class/를 읽을 수 있습니다. 또한 http://quellish.tumblr.com/post/93355099502/performblock-vs-performblockandwait을 추천합니다. – Kunal

관련 문제