-(void)buttonClick:(id)sender
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
for(int i=0;i<500000000;i++)
{
//Simulates network activity
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
理論的には、画面の左上隅にあるネットワークアクティビティスピナーがオンになり、しばらくスピンしてからオフになります...ただし、表示されることはありません。
-(void)buttonClick:(id)sender
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
for(int i=0;i<500000000;i++)
{
//Simulates network activity
}
//[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
「=NO」がコメントアウトされていると、プログラムがforループ全体を実行し、forループが完了した後、スピナーが最終的に回転を開始することに気付きました。
-(void)viewWillAppear:(BOOL)animated
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES
}
-(void)buttonClick:(id)sender
{
for(int i=0;i<500000000;i++)
{
//Simulates network activity
}
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
これで、ビューが表示されると、インジケーターが回転し始めます。ボタンをクリックすると、ループの実行中にボタンが回転し続けます。forループが終了すると、スピナーは期待どおりに停止します。
-=-=-=-=-=-=-=-=-=-
私の質問はこれです、なぜ最初の2つの例のforループの後までスピナーが回転し始めないのですか?
-=-=-=-=-=-=-=-=-=-
これまでの私の考え:
この特定の例でスピナーが起動しない理由については...おそらくメッセージを送信しますが、コンパイルされたコードがどのように機能するかにより、forループが終了するまで実行されませんか?
おそらく、これを行う正しい方法は、ネットワークアクティビティインジケーターを有効にしてから、ネットワークアクティビティを実行する別のスレッドを起動し、そのスレッドが完了すると、メインスレッドにメッセージを送信することです(おそらく、取得したデータも使用します)。
-=-=-=-=-=-=-=-=-
任意のアドバイス/回答をいただければ幸いです。前もって感謝します。このアプリはiPad用であることに注意してください。