CoreData의 병렬 처리

3214 단어 CoreDataiOS

CoreData의 병렬 처리


주의점


기본적으로 다음과 같은 두 가지를 주의해야 한다.
  • NSManagedObjectContext 스레드 보안 아님
  • NSManagedObject 스레드 보안 아님
  • 모범 사례

  • NSManagedObjectContext 스레드(대기열)를 지정하여 생성합니다.
  • // メインスレッド用のNSManagedObjectContext
    NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
    
    // バッググラウンドスレッド用のNSManagedObjectContext
    NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
    
  • NSManagedObjectContext 또는 NSManagedObject 블록에서 performBlock:performBlockAndWait:를 사용합니다.
  • // 非同期で処理を行う
    [moc performBlock:^{
        // 非同期処理
        [moc save:nil];
    }];
    
    // 同期で処理を行う
    [moc performBlockAndWait:^{
        // 同期処理
        [moc save:nil];
    }];
    

  • 친자관계 사용NSManagedObjectContext.
  • Multi-Context CoreData
    * 공식 문서Core Data 프로그래밍 가이드 - Apple DeveloperCore Dataによる並列処理를 확인한 후 처음에 다음과 같은 내용이 쓰여 있어 참고할 수 없습니다.
    컴레데이터의 병행 처리된 베스트 프레이즈에 따라 이 자료를 집필하던 당시부터 크게 달라졌다.지금은 이 장의 내용을 추천하지 않으니 주의하세요.

    디버깅


    Xcode가 시작될 때 매개 변수-com.apple.CoreData.ConcurrencyDebug 1를 지정하여 시작하면 병렬 처리를 위반할 때 예외가 발생하고 알려집니다.

    상세 정보Core Data Concurrency Debugging

    좋은 웹페이지 즐겨찾기