현재 멀티 스레드 환경에서 코어 데이터를 사용하는 방법을 배우고 있습니다. 읽고에 대한/업데이트를 생성/삭제 작업을 NSPrivateQueueConcurrencyType
와 자식 NSManagedObjectContext
에 대한 NSMainQueueConcurrencyType
와 메인 NSManagedObjectContext
: NSPrivateQueueConcurrencyType을 사용하여 NSManagedObjectContext 저장
NSManagedObjectContext
와 작은 프로젝트를 만들었습니다.
종종 NSPrivateQueueConcurrencyType
과 NSManagedObjectContext
지금처럼 performBlock:
을 통해 수행되어야 절약이 말했다되었습니다
performBlock:
가 생략 된 경우, 어떻게 그렇게 좋아
[context performBlock:^
{
Book *mutableBook = [self getMutableVersionOfBook:book];
[context deleteObject:mutableBook];
[context save:nil];
}];
:
Book *mutableBook = [self getMutableVersionOfBook:book];
[context deleteObject:mutableBook];
[context save:nil];
가합니까 저장이 호출 된 스레드에서 저장이 발생합니까? performBlock:
을 사용하지 않으면 어떻게됩니까?
시도하면 어떻게됩니까? – Abizern
@Abizem 데이터를 저장합니다. 나는 데이터가 어떤 식으로 저장되는지, 그리고 왜 이것이 권장 접근법이 아닌지 궁금하다. – MrJre
BooL * mutableBook 라인과 deleteObject 라인 다음에 중단 점을 놓고 새 스레드가 생성되었는지 확인하십시오 (Xcode -> 왼쪽면 -> 여섯 번째 탭 -> CPU-> 아래 스레드 참조).이것이 새 스레드에서 발생하는지 여부를 알 수 있습니다. – santhu