我有一個iPad應用程序,我正在使用與核心數據NSUndoManager。事情通常很好,除了當我多次撤消/重做時有一個半可重現的錯誤。我只在主線程上工作(至少,我已禁用MagicalRecords在輔助線程上使用NSManagedObject。如果我嘗試撤銷/重做NSManagedObject到上下文的插入,問題總是會發生。CoreData拋出異常與NSUndoManager
我有這樣的事情:
if (!self.undoManager.isUndoing && !self.undoManager.isRedoing)
{
[self.undoManager undo];
}
else
{
NSLog(@"gotcha!");
}
而且幾次之後,我得到以下異常它發生在一個輔助線程,這讓我覺得核心數據在後臺做一些
CoreData: error: Serious application error. Exception was caught during Core Data
change processing. This is usually a bug within an observer of
NSManagedObjectContextObjectsDidChangeNotification. _registerUndoObject:: NSUndoManager
0xcea2d60 is in invalid state, must begin a group before registering undo
with userInfo (null) 2012-07-25 15:42:26.850 TT[3972:3c07] *** Terminating app due to
uncaught exception 'NSInternalInconsistencyException', reason: '_registerUndoObject::
NSUndoManager 0xcea2d60 is in invalid state, must begin a group before registering undo
。
有時候我也是開玩笑g EXEC_BAD_ACCESS,其他時候只是上面的例外。
任何想法可能會造成這種情況?
編輯:爲澄清曼迪情況(見註釋)
您需要給予更多的上下文,而不僅僅是對「撤銷」的調用。 – Mundi 2012-07-25 20:54:21
當撤消發生時,我重建UI,這是一個非常昂貴的操作(從原始的NSManagedObjects重建大量的自定義UIViews)。這最終會被優化。在這裏很難提供一段代碼(這是一個大型項目) - 對你有用嗎? – 2012-07-25 20:56:27
你在撤消什麼? – Mundi 2012-07-25 22:02:33