私のアプリは、バックグラウンド キューでソケット接続を処理します。接続キューから呼び出されるヘルパー クラス内で、検証 (フェッチ要求) を実行するためにコア データにアクセスする必要があります。メイン キューでコア データ フェッチを実行し、値を接続キューに渡すにはどうすればよいですか?
コードは次のとおりです。
-(void)getIsFavourite {
//Execute the following codes in Main thread
id <CHFavouriteUserDao>dao =[CHServiceRepository findService:@protocol(CHFavouriteUserDao)];
//findFavouriteUserByName will execute a fetch request and return a NSManagedObject
FavouriteUser *user = [dao findFavouriteUserByName:self.uniqueIdentifier];
//Switch back to the background queue
if (user!= nil) {
[self setIsFavourite:YES];
}
- を試してみました
performSelectorOnMainThread:withObject:waitUntilDone:YES
。ただし、ソケットの実行をメイン キューに移動し、アプリをフリーズします。 - でdispatch_asyncを試しまし
dispatch_get_main_queue()
たが、ソケット接続が実行されているバックグラウンドキューにどのようにアクセスできるかが問題です(dispatch_get_current_queue
非推奨です。