IKImageBrowserView“--ImageKit错误:在非主线程中调用reloadData”

时间:2011-01-09 20:10:25

标签: cocoa reloaddata imagekit ikimagebrowserview

我正在编写一个使用IKImageBrowserView的Cocoa Mac应用程序。 当我打电话给以下人员时:

[imageBrowserView reloadData];

调试器控制台打印出这个:

--ImageKit Error: reloadData called in non main thread

我尝试将reloadData方法放在另一个方法中,然后调用以下内容:

[self performSelectorOnMainThread:@selector(reloadMyView) withObject:nil waitUntilDone:NO];

但我仍然得到相同的ImageKit错误。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

**固定**

原因是使用Bindings从NSArrayController填充我的IKImageBrowserView,以及在填充更新后调用save自己的NSManagedObjectContext的NSOperation。

我有一个Notification Observer,当NSOperation中的上下文保存时,我可以 mergeChangesFromContextDidSaveNotification 到我的主线程上下文,但我需要在MainThread上执行此操作。 NSArrayController将 automaticPreparesContent 设置为YES,“也注册为其托管对象上下文的观察者”。因此,当从通知执行合并时,这是在与NSOperation相同的单独线程上完成的,因此NSArrayController在单独的线程上再次准备它的内容,然后再次在单独的线程上更新IKImageBrowserView导致错误/警告。