NSArrayControllerのrearrangeObjects関数に問題があります-この関数はいくつかのバックグラウンドトレッドから呼び出され、アプリがエラーでクラッシュすることがあります:'endUpdatesがbeginUpdatesなしで呼び出されました'。
arrayControllerが現在オブジェクトを再配置しているかどうかを検出し、次の再配置をキューなどに追加したり、現在の再配置をキャンセルして新しく実行したりするにはどうすればよいですか?
この問題の別の解決策があるかもしれませんか?
追加された編集コード:
TableController implementation:
- (void)setContent{//perfoms on main thread
//making array of content and other functions for setting-up content of table
//...
//arrayController contains objects of MyNode class
//...
//end of setting up. Call rearrangeObjects
[arrayController rearrangeObjects];
}
- (void)updateItem:(MyNode *)sender WithValue:(id)someValue ForKey:(NSString *)key{
[sender setValue:someValue forKey:key];
[arrayController rearrangeObjects];//exception thrown here
}
MyNode implementation:
- (void)notifySelector:(NSNotification *)notify{
//Getted after some processing finished
id someValue = [notify.userInfo objectForKey:@"observedKey"];
[delegate updateItem:self WithValue:someValue ForKey:@"observedKey"];
}