SORU
29 Kasım 2011, Salı


Çekirdek Veri fon üzerinden alınıyor NSPrivateQueueConcurrencyType

Gerçekten çok basit iOS5 şimdi?

Arka plan benim AppDelegate: bu kodu kullanarak getir gerçekleştirmek için kullanılır

dispatch_queue_t downloadQueue = dispatch_queue_create("DownloadQueue", NULL);
dispatch_async(downloadQueue, ^{
        self.myDownloadClass = [[MyDownloadClass alloc]initInManagedObjectContext:self.managedObjectContext];
        [self.myDownloadClass download];
    });

dispatch_release(downloadQueue);

İndir benim sınıf bazı XML veri getirmek için bir NSURLConnection gerçekleştiren NSXMLParser verileri ayrıştırmak için kullanır ve sonra güncelleştirmeleri çekirdek veri karmaşık bir şema. Her zaman aslında temel verileri güncelleştirmek için ana konuya geçiş yapmak istiyorum. Dağınık kod, dispatch_sync için çok sayıda çağrı ile (() dispatch_get_main_queue....

Benim yeni kod bu gibi görünüyor:

NSManagedObjectContext *child = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[child setParentContext:self.managedObjectContext];

[child performBlock:^{
    self.myDownloadClass = [[MyDownloadClass alloc]initInManagedObjectContext:child];
    [self.myDownloadClass download];
    }];

üst modeli benim AppDelegate diğer bazı küçük kod değişikliği ile birlikte NSMainQueueConcurrencyType bağlam nesne türü:

- (NSManagedObjectContext *)managedObjectContext
{
    if (__managedObjectContext != nil)
    {
        return __managedObjectContext;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil)
    {
        __managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
        [__managedObjectContext setPersistentStoreCoordinator:coordinator];
    }
    return __managedObjectContext;
}

Çok iyi iş gibi görünüyor. Tüm güncelleme işlemi hala ayrı bir iş parçacığı çalışır, ama bir iş parçacığı oluşturmak için yoktu. Sihirli gibi görünüyor.

Eğer fiziksel temel veri değişiklikleri kaydetmek isterseniz unutma dosyalar, seni aramasını kaydedin:. olarak üst bağlama

Gerçekten burada bir soru sormadım. Ben gönderme bu çok yardımcı olur, çünkü Diğerleri her şeyi bulduğumda arama için yeni iOS5 yönetilen nesne bağlamı yöntemleri sadece verdiği yüksek düzeyde ayrıntıları ile hiç kod örnekleri Ve tüm diğer aramalar için getiriliyor çekirdek veri arka plan eski, bazen çok yaşlı, ve tartışmak nasıl yapacağını önceden iOS5.

CEVAP
26 ŞUBAT 2012, Pazar


Evet gerçekten artık çok kolay (iOS 5.0). İOS 4 uyumluluğu, önceki engeller devam ediyor, ama belgelere iplik hapsi çok kötü değil. Belki wiki bir bölüm için bu eklemek gerekir?

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 30GB

    30GB

    14 AĞUSTOS 2006
  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007
  • WhtButterflyLiz

    WhtButterfly

    14 NİSAN 2008