當前正在學習如何在多線程環境中使用核心數據;使用NSPrivateQueueConcurrencyType保存NSManagedObjectContext
因此,我創建了一個小型的項目有兩個NSManagedObjectContext
:主NSManagedObjectContext
與NSMainQueueConcurrencyType
進行讀取和其子NSManagedObjectContext
與NSPrivateQueueConcurrencyType
創建/更新/刪除操作。
人們常常說,儲蓄與NSPrivateQueueConcurrencyType
一個NSManagedObjectContext
應通過performBlock:
做到像這樣:
[context performBlock:^
{
Book *mutableBook = [self getMutableVersionOfBook:book];
[context deleteObject:mutableBook];
[context save:nil];
}];
如果省略performBlock:
會發生什麼,就像這樣:
Book *mutableBook = [self getMutableVersionOfBook:book];
[context deleteObject:mutableBook];
[context save:nil];
請問保存然後發生在保存被調用的線程上?如果不使用performBlock:
會發生什麼?
當你嘗試時發生了什麼? – Abizern
@Abizem它保存數據;我主要好奇數據保存的方式,以及爲什麼它不是推薦的方法。 – MrJre
在BooL * mutableBook行和delete行之後放置一個斷點,並查看是否在(Xcode - > Left Side-> 6th tab-> click CPU-> see below threads)上創建了一個新線程。你會知道這是否發生在新線程中。 – santhu