2011-01-09 7 views
0

IKImageBrowserViewを使用するCocoa Macアプリケーションを作成しています。 私は次のように呼び出します。IKImageBrowserView "--ImageKit Error:reloadDataが非メインスレッドで呼び出されました"

[imageBrowserView reloadData]; 

ザ・デバッガコンソールは、これを出力します。

--ImageKit Error: reloadData called in non main thread 

私は別の方法でreloadDataメソッドを配置し、次の呼び出し試してみました:

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

しかし、私はまだ同じImageKitエラーを取得します。何か案は? FIXED

答えて

1

** **

理由はNSArrayControllerはから私のIKImageBrowserViewを移入するバインディングを使用して、更新を移入した後に、それ自身のNSManagedObjectContext上のセーブと呼ばれるNSOperationの組み合わせでした。

私はNSOperationのコンテキストが私のメインスレッドのコンテキストに私は可能性があり、その後mergeChangesFromContextDidSaveNotificationを保存したが、私はMainThreadでこれを実行するために必要なときの通知オブザーバーを持っていました。 NSArrayControllerは、automaticallyPreparesContentがYESに設定されています。は、 "管理対象オブジェクトコンテキストのオブザーバとしても登録されています"です。したがって、NSOperationと同じ別のスレッドで行われていた通知からマージが実行されたため、NSArrayControllerは別のスレッドで内容を再準備してから別のスレッドでIKImageBrowserViewを更新します。エラー/警告が発生していました。

関連する問題