これが私がやっていることです。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://myurl"]]];
dispatch_sync(dispatch_get_main_queue(), ^{
if(!data) {
// data not recieved or bad data. Initiate reachability test
// I have built a wrapper for Reachability class called ReachabilityController
// ReachabilityController also notifies the user for avaibility, UI
ReachabilityController *reachability = [[ReachabilityController alloc] init];
[reachability checkReachability];
return;
}
//update table
});
});
私の問題は、到達可能性テストがメイン キューで実行されていることです。これにより、UI がフリーズすることがよくあります。バックグラウンドモードで実行したい。
バックグラウンド モードまたは優先度の低いモードで ReachabilityTest を処理したいと考えています。しかし、繰り返しになりますが、到達可能性コントローラーは現在のネット可用性をユーザーに通知するため、ある時点でメイン キューを再度使用する必要があります。
もっと良い方法があるはずだと強く信じています。