我有背景NSInvocationOperation創建和保存的NSArray到NSManagedObject子類。NSOperationQueue waitUntilAllOperationsAreFinished與performSelectorOnMainThread
我知道保存應該發生在主線程上,所以我使用performSelectorOnMainThread來保存操作。
當用戶在iPhone 3G上按下Home按鈕時,應用程序將退出。在applicationDidEnterBackground我做[queue waitUntilAllOperationsAreFinished],以便NSInvocationOperation有時間完成。
問題是,它只是等待操作的「背景部分」 - 應用程序在performSelectorOnMainThread操作前被關閉,部分操作被稱爲。這意味着我的NSManagedObject不會被保存。
我試圖保存操作線程中的對象 - 應用程序正常關閉並且更改已保存。但我認爲這不好,因爲NSManagedObject不是線程安全的。還是可以做到這一點?
它看起來像趕上22.我必須錯過的東西 - 有沒有任何優雅的方式如何解決這個問題?
是的,我擔心我應該做所有這些,但並沒有那麼糟糕:)我還必須將輔助上下文的合併策略更改爲NSMergeByPropertyStoreTrumpMergePolicy,因爲同一對象的某些其他屬性同時被更改並保存主要背景。 –
啊,這很好,它起初看起來很多,但真的不是那麼糟糕。我有一個同步操作,將合併策略設置爲覆蓋。 – Joe