ネットワークが遅いと、すべての UI テストが失敗することに気付きました。たとえば、ユーザーがログインしようとすると、別の UIElement を画面に表示するには、次の画面が十分に速く読み込まれません。
delay() を使用せずに低速のネットワーク接続を処理するにはどうすればよいですか?
ネットワークが遅いと、すべての UI テストが失敗することに気付きました。たとえば、ユーザーがログインしようとすると、別の UIElement を画面に表示するには、次の画面が十分に速く読み込まれません。
delay() を使用せずに低速のネットワーク接続を処理するにはどうすればよいですか?
あなたは間違いなくマルチスレッドを見てみるべきです。ネットワーク接続を処理するときは、このすべての処理をセカンダリ スレッドで行う必要があります。そうでない場合、メイン スレッドがブロックされ、アプリがユーザーに応答しなくなります。
マルチスレッドは非常に大きなテーマです。これについては、 Apple のリファレンスを参照することをお勧めします。また、iTunes U の優れたコース(講義 11)も参照できます。
試してみたいだけの場合は、必要な実際のコード (類似) を次に示します。
dispatch_queue_t newQueue = dispatch_queue_create("networkQueue", NULL);
dispatch_async(newQueue, ^{
// here you need to call the networking processes
dispatch_async(dispatch_get_main_queue(), ^{
// if you need to update your UI, you need to get back to the main queue.
// This block will be executed in your main queue.
});
});
私が知っている唯一の方法は、遅延を使用することです。私は通常、インターネットからコンテンツをロードするときにアクティビティ インジケーターを表示します。そのため、アクティビティ インジケーターが表示されている間に遅延を追加します
while (activityIndicator.isVisible())
{
UIALogger.logMessage("Loading");
UIATarget.localTarget().delay(1);
}