2013-11-01 95 views
0

我已將iCloud集成到我的應用程序中,並且能夠在我的持久性存儲中成功保存iCloud更改。目前,我做了以下內容: -NSManagedObjectContext子隊列與立即執行performblock

//我NSManagedObjectContext(使用主線程)被聲明爲NSMainQueueConcurrencyType

  1. 傾聽iCloud的通知
  2. 使用更改合併到主managedObjectContext performBlock

我也看到了以下方法: -

// NSManaged ObjectContext的(由主線程使用)被聲明爲NSMainQueueConcurrency類型

  1. 創建具有NSPrivateQueueConcurrency類型中執行的方法及其併發類型的臨時管理對象上下文時的iCloud發送通知
  2. 使主MOC作爲父臨時MOC
  3. 確實省了臨時MOC使用(這將推動改變主MOC)
  4. 確實省上主要MOC performBlock

因此,這兩種方法都使用performBlock來保存對持久性存儲的更改。那麼,任何方法都有什麼特別的優勢/劣勢?

回答

0

最大,

一切都是權衡。從使用兒童MOC獲得的巨大勝利是隱含的父母狀態緩存,並且節省相當快。 (它們的速度很快,因爲它們只是將數據向上推送到父 - 子堆棧中,您仍然需要從父級保存數據以保留數據。)

您的架構的缺點是遠程保存發生在您的主循環。如果他們花費很多時間,而且保存時間有時會花費過多的時間,那麼UI響應會受到影響。

在回答你的問題時,-performBlock:調用不會改變這些事實。他們所做的只是將處理推遲到主循環的下一次迭代。

安德魯